package app import ( "os" ) type AppEnvType int type AppEnvName string const ( AppEnvTypeDevelopment AppEnvType = iota AppEnvTypeStaging AppEnvTypeProduction ) func (app AppEnvType) String() string { switch app { case AppEnvTypeDevelopment: return "development" case AppEnvTypeStaging: return "staging" case AppEnvTypeProduction: return "production" default: return "unknown" } } var ( knownEnvTypeEnvs = []string{ "UNIVERSE_ENV", "APP_ENV", } ) func provideEnv() AppEnvType { for _, envType := range knownEnvTypeEnvs { value := os.Getenv(envType) if value == "" { continue } switch envType { case "development", "dev", "devel": return AppEnvTypeDevelopment case "staging", "test": return AppEnvTypeStaging case "production", "prod": return AppEnvTypeProduction default: return AppEnvTypeDevelopment } } return AppEnvTypeDevelopment }