base-golang/pkg/env/env.go

81 lines
1.4 KiB
Go
Raw Normal View History

2024-07-23 10:23:43 +08:00
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
}