diff --git a/config.go b/config.go index ef201ec6..314e91b2 100644 --- a/config.go +++ b/config.go @@ -26,6 +26,7 @@ import ( "github.com/astaxie/beego/logs" "github.com/astaxie/beego/session" "github.com/astaxie/beego/utils" + "github.com/kelseyhightower/envconfig" ) var ( @@ -83,9 +84,14 @@ var ( RouterCaseSensitive bool // router case sensitive default is true ) -type beegoAppConfig struct { - innerConfig config.ConfigContainer -} +type ( + beegoAppConfig struct { + innerConfig config.ConfigContainer + } + beegoEnvConfig struct { + RunMode string + } +) func newAppConfig(AppConfigProvider, AppConfigPath string) *beegoAppConfig { ac, err := config.NewConfig(AppConfigProvider, AppConfigPath) @@ -288,8 +294,16 @@ func init() { func ParseConfig() (err error) { AppConfig = newAppConfig(AppConfigProvider, AppConfigPath) + var ec beegoEnvConfig + err = envconfig.Process("beego", &ec) + if err != nil { + return err + } + // set the runmode first - if runmode := AppConfig.String("RunMode"); runmode != "" { + if ec.RunMode != "" { + RunMode = ec.RunMode + } else if runmode := AppConfig.String("RunMode"); runmode != "" { RunMode = runmode }