57 lines
903 B
Go
57 lines
903 B
Go
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
|
|
}
|