81 lines
1.4 KiB
Go
81 lines
1.4 KiB
Go
|
package env
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"strings"
|
||
|
)
|
||
|
|
||
|
var (
|
||
|
active Environment
|
||
|
dev Environment = &environment{value: "dev"} //开发环境
|
||
|
fat Environment = &environment{value: "fat"} //测试环境
|
||
|
uat Environment = &environment{value: "uat"} //预上线环境
|
||
|
pro Environment = &environment{value: "pro"} //正式环境
|
||
|
)
|
||
|
|
||
|
var _ Environment = (*environment)(nil)
|
||
|
|
||
|
// Environment 环境配置
|
||
|
type Environment interface {
|
||
|
Value() string
|
||
|
IsDev() bool
|
||
|
IsFat() bool
|
||
|
IsUat() bool
|
||
|
IsPro() bool
|
||
|
t()
|
||
|
}
|
||
|
|
||
|
type environment struct {
|
||
|
value string
|
||
|
}
|
||
|
|
||
|
func (e *environment) Value() string {
|
||
|
return e.value
|
||
|
}
|
||
|
|
||
|
func (e *environment) IsDev() bool {
|
||
|
return e.value == "dev"
|
||
|
}
|
||
|
|
||
|
func (e *environment) IsFat() bool {
|
||
|
return e.value == "fat"
|
||
|
}
|
||
|
|
||
|
func (e *environment) IsUat() bool {
|
||
|
return e.value == "uat"
|
||
|
}
|
||
|
|
||
|
func (e *environment) IsPro() bool {
|
||
|
return e.value == "pro"
|
||
|
}
|
||
|
|
||
|
func (e *environment) t() {}
|
||
|
|
||
|
func Set(env string) error {
|
||
|
var err error
|
||
|
|
||
|
switch strings.ToLower(strings.TrimSpace(env)) {
|
||
|
case "dev":
|
||
|
active = dev
|
||
|
case "fat":
|
||
|
active = fat
|
||
|
case "uat":
|
||
|
active = uat
|
||
|
case "pro":
|
||
|
active = pro
|
||
|
default:
|
||
|
err = fmt.Errorf("'%s' cannot be found, or it is illegal. enum:dev(开发环境),fat(测试环境),uat(预上线环境),pro(正式环境)", env)
|
||
|
}
|
||
|
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
// Active 当前配置的env
|
||
|
func Active() Environment {
|
||
|
if active == nil {
|
||
|
fmt.Println("Warning: environment not set. The default 'dev' will be used.")
|
||
|
active = dev
|
||
|
}
|
||
|
return active
|
||
|
}
|