经常会有这样的需求,就是在执行shell脚本构建程序的时候,希望能够在shell中指定某些配置文件的值。
也就是说,shell命令中的优先级要高于配置文件的优先级。
configor(https://github.com/jinzhu/configor)也只支持的,看下面的脚本
cd ../src
go build -o ../main
cd ../
CONFIGOR_ENV=test CONFIGOR_DB_NAME="aa" ./main
#CONFIGOR_ENV=test ./main
对应的配置文件:
appname: common
db:
name: test
user: root
password: 123456
port: 3306
contacts:
- name: i test
email: test@test.com
- name: i test2
email: test2@test.com
对应的配置struct
//配置类
var Config = struct {
APPName string `default:"app name"`
DB struct {
Name string
User string `default:"root"`
Password string `required:"true" env:"DBPassword"`
Port uint `default:"3306"`
}
Contacts []struct {
Name string
Email string `required:"true"`
}
}{}
执行后,能够看到,shell命令中的
CONFIGOR_DB_NAME="aa"
覆盖了原有的配置文件中的值。