diff --git a/backend/cmd/config.go b/backend/cmd/config.go index a7961d6..5be1511 100644 --- a/backend/cmd/config.go +++ b/backend/cmd/config.go @@ -4,8 +4,11 @@ import ( "fmt" "os" "path" + "strconv" ) +const envPrefix = "AETHERA_" + type cliParams struct { ListenAddr string ListenPort int @@ -13,6 +16,24 @@ type cliParams struct { SettingsFile string } +// getEnvOrDefault returns the value of an environment variable or a default value +func getEnvOrDefault(key, defaultValue string) string { + if value := os.Getenv(envPrefix + key); value != "" { + return value + } + return defaultValue +} + +// getEnvIntOrDefault returns the integer value of an environment variable or a default value +func getEnvIntOrDefault(key string, defaultValue int) int { + if value := os.Getenv(envPrefix + key); value != "" { + if intVal, err := strconv.Atoi(value); err == nil { + return intVal + } + } + return defaultValue +} + func (p *cliParams) Validate() error { // Ensure Generated Directories imgDir := path.Join(p.DataDir, "generated/images") diff --git a/backend/cmd/main.go b/backend/cmd/main.go index 329ecc7..938135d 100644 --- a/backend/cmd/main.go +++ b/backend/cmd/main.go @@ -13,17 +13,17 @@ import ( var ( params = cliParams{ - ListenAddr: "localhost", - ListenPort: 8080, - DataDir: "./data", + ListenAddr: getEnvOrDefault("LISTEN", "localhost"), + ListenPort: getEnvIntOrDefault("PORT", 8080), + DataDir: getEnvOrDefault("DATA_DIR", "./data"), } rootCmd = &cobra.Command{Use: "aethera"} ) func init() { - rootCmd.PersistentFlags().StringVar(¶ms.DataDir, "data-dir", "data", "Directory to store generated images") - rootCmd.PersistentFlags().StringVar(¶ms.ListenAddr, "listen", "localhost", "Address to listen on") - rootCmd.PersistentFlags().IntVar(¶ms.ListenPort, "port", 8080, "Port to listen on") + rootCmd.PersistentFlags().StringVar(¶ms.DataDir, "data-dir", params.DataDir, "Directory to store generated images (env: AETHERA_DATA_DIR)") + rootCmd.PersistentFlags().StringVar(¶ms.ListenAddr, "listen", params.ListenAddr, "Address to listen on (env: AETHERA_LISTEN)") + rootCmd.PersistentFlags().IntVar(¶ms.ListenPort, "port", params.ListenPort, "Port to listen on (env: AETHERA_PORT)") } func main() {