github.com/artisanhe/tools@v1.0.1-0.20210607022958-19a8fef2eb04/env/env.go (about) 1 package env 2 3 import ( 4 "fmt" 5 "os" 6 "strings" 7 ) 8 9 const ( 10 UNKNOWN = iota 11 ONLINE 12 PRE 13 DEMO 14 TEST 15 STAGING 16 DEV 17 ) 18 19 type GoEnv int 20 21 func (goEnv GoEnv) String() string { 22 switch goEnv { 23 case ONLINE: 24 return "ONLINE" 25 case PRE: 26 return "PRE" 27 case DEMO: 28 return "DEMO" 29 case TEST: 30 return "TEST" 31 case STAGING: 32 return "STAGING" 33 case DEV: 34 return "DEV" 35 default: 36 panic(fmt.Sprintf("invalid go env %d", goEnv)) 37 } 38 } 39 40 func GetRuntimeEnv() GoEnv { 41 goEnv := os.Getenv("GOENV") 42 if goEnv == "" { 43 goEnv = "DEV" 44 } 45 switch strings.ToUpper(goEnv) { 46 case "ONLINE": 47 return ONLINE 48 case "PRE": 49 return PRE 50 case "DEMO": 51 return DEMO 52 case "TEST": 53 return TEST 54 case "STAGING": 55 return STAGING 56 case "DEV": 57 return DEV 58 default: 59 panic("invalid go env " + goEnv) 60 } 61 } 62 63 func IsOnline() bool { 64 return GetRuntimeEnv() == ONLINE 65 }