package main import "strings" // Naming derives all infrastructure names and paths from a single ClientName. type Naming struct { ClientName string // e.g. "seamark" } // DisplayName returns the title-cased client name (e.g. "Seamark"). func (n Naming) DisplayName() string { if n.ClientName == "" { return "" } return strings.ToUpper(n.ClientName[:1]) + n.ClientName[1:] } // SystemUser returns the unix user name. func (n Naming) SystemUser() string { return n.ClientName } // InstallDir returns the source/build directory (e.g. "/opt/seamark"). func (n Naming) InstallDir() string { return "/opt/" + n.ClientName } // ConfigDir returns the config directory (e.g. "/etc/seamark"). func (n Naming) ConfigDir() string { return "/etc/" + n.ClientName } // BasePath returns the data directory (e.g. "/var/lib/seamark"). func (n Naming) BasePath() string { return "/var/lib/" + n.ClientName } // LogFile returns the setup log path (e.g. "/var/log/seamark-setup.log"). func (n Naming) LogFile() string { return "/var/log/" + n.ClientName + "-setup.log" } // Appview returns the appview binary/service/server name (e.g. "seamark-appview"). func (n Naming) Appview() string { return n.ClientName + "-appview" } // Hold returns the hold binary/service/server name (e.g. "seamark-hold"). func (n Naming) Hold() string { return n.ClientName + "-hold" } // AppviewConfigPath returns the appview config file path. func (n Naming) AppviewConfigPath() string { return n.ConfigDir() + "/appview.yaml" } // HoldConfigPath returns the hold config file path. func (n Naming) HoldConfigPath() string { return n.ConfigDir() + "/hold.yaml" } // NetworkName returns the private network name (e.g. "seamark-private"). func (n Naming) NetworkName() string { return n.ClientName + "-private" } // LBName returns the load balancer name (e.g. "seamark-lb"). func (n Naming) LBName() string { return n.ClientName + "-lb" } // Scanner returns the scanner binary/service name (e.g. "seamark-scanner"). func (n Naming) Scanner() string { return n.ClientName + "-scanner" } // ScannerConfigPath returns the scanner config file path. func (n Naming) ScannerConfigPath() string { return n.ConfigDir() + "/scanner.yaml" } // ScannerDataDir returns the scanner data directory (e.g. "/var/lib/seamark/scanner"). func (n Naming) ScannerDataDir() string { return n.BasePath() + "/scanner" } // Labeler returns the labeler binary/service name (e.g. "seamark-labeler"). func (n Naming) Labeler() string { return n.ClientName + "-labeler" } // LabelerConfigPath returns the labeler config file path. func (n Naming) LabelerConfigPath() string { return n.ConfigDir() + "/labeler.yaml" } // LabelerDataDir returns the labeler data directory (e.g. "/var/lib/seamark/labeler"). func (n Naming) LabelerDataDir() string { return n.BasePath() + "/labeler" } // S3Name returns the name used for S3 storage, user, and bucket. func (n Naming) S3Name() string { return n.ClientName }