Browse Source

优化 优先级: 命令行 > 环境变量 > 默认值 功能

main
SliverHorn 4 years ago
parent
commit
bfda990cae
  1. 1
      server/config.yaml
  2. 3
      server/config/config.go
  3. 33
      server/core/config.go

1
server/config.yaml

@ -78,6 +78,7 @@ system:
db-type: "mysql" # support mysql/postgresql/sqlite/sqlserver
need-init-data: false
error-to-email: false
config-env: "GVA_CONFIG"
# captcha configuration
captcha:

3
server/config/config.go

@ -22,7 +22,8 @@ type System struct {
Addr int `mapstructure:"addr" json:"addr" yaml:"addr"`
DbType string `mapstructure:"db-type" json:"dbType" yaml:"db-type"`
NeedInitData bool `mapstructure:"need-init-data" json:"needInitData" yaml:"need-init-data"`
ErrorToEmail bool `mapstructure:"error-to-email" json:"errorToEmail" yaml:"error-to-email"`
ErrorToEmail bool `mapstructure:"error-to-email" json:"errorToEmail" yaml:"error-to-email"`
ConfigEnv string `mapstructure:"config-env" json:"configEnv" yaml:"config-env"`
}
type JWT struct {

33
server/core/config.go

@ -1,32 +1,35 @@
package core
import (
"flag"
"fmt"
"gin-vue-admin/global"
_ "gin-vue-admin/packfile"
"github.com/fsnotify/fsnotify"
"github.com/spf13/viper"
"github.com/spf13/pflag"
"os"
)
var config string
const defaultConfigFile = "config.yaml"
func init() {
pflag.StringP("configFile","c", "", "choose config file.")
pflag.Parse()
// 优先级: 命令行 > 环境变量 > 默认值
v := viper.New()
v.BindPFlags(pflag.CommandLine)
v.SetEnvPrefix("gva")
v.BindEnv("configFile") // GVA_CONFIGFILE
configFile := v.GetString("configFile")
if configFile == ""{
configFile = defaultConfigFile
flag.StringVar(&config, "c", "", "choose config file.")
flag.Parse()
if config == "" { // 优先级: 命令行 > 环境变量 > 默认值
if configEnv := os.Getenv(global.GVA_CONFIG.System.ConfigEnv); configEnv == "" {
config = defaultConfigFile
fmt.Printf("您正在使用config的默认值,config的路径为%v\n", defaultConfigFile)
} else {
config = configEnv
fmt.Printf("您正在使用GVA_CONFIG环境变量,config的路径为%v\n", config)
}
} else {
fmt.Printf("您正在使用命令行的-c参数传递的值,config的路径为%v\n", config)
}
v.SetConfigFile(configFile)
v := viper.New()
v.SetConfigFile(config)
err := v.ReadInConfig()
if err != nil {
panic(fmt.Errorf("Fatal error config file: %s \n", err))

Loading…
Cancel
Save