package env import ( "os" "strings" ) // RunEnv represents the runtime environment type RunEnv string const ( // Local environment for local development Local RunEnv = "LOCAL" // Development environment for development/testing Development RunEnv = "DEVELOPMENT" // Production environment for production use Production RunEnv = "PRODUCTION" // RunEnvKey is the environment variable key for run environment RunEnvKey = "RUN_ENV" // CfgPathKey is the environment variable key for config file path CfgPathKey = "CFG_PATH" // DefaultCfgPath is the default config file path DefaultCfgPath = "config/config.yml" ) // GetRunEnv returns the current run environment from env variable // Defaults to Local if not set or invalid func GetRunEnv() RunEnv { env := os.Getenv(RunEnvKey) switch strings.ToUpper(env) { case string(Development): return Development case string(Production): return Production default: return Local } } // Get returns the environment variable value for the given key // Returns empty string if not set func Get(key string) string { return os.Getenv(key) } // GetWithDefault returns the environment variable value for the given key // Returns defaultValue if not set func GetWithDefault(key, defaultValue string) string { if val := os.Getenv(key); val != "" { return val } return defaultValue } // IsLocal returns true if current environment is Local func IsLocal() bool { return GetRunEnv() == Local } // IsDevelopment returns true if current environment is Development func IsDevelopment() bool { return GetRunEnv() == Development } // IsProduction returns true if current environment is Production func IsProduction() bool { return GetRunEnv() == Production } // GetCfgPath returns the config file path from env variable // Returns DefaultCfgPath if not set func GetCfgPath() string { return GetWithDefault(CfgPathKey, DefaultCfgPath) }