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  }