Jacket of spf13/viper: config for wire-jacket. Simplified env-based go configuration package using viper.
- bang9211/wire-jacket : https://github.com/bang9211/wire-jacket
- spf13/viper : https://github.com/spf13/viper
Install Wire-Jacket by running:
go get github.com/bang9211/viper-jacket
and ensuring that $GOPATH/bin is added to your $PATH.
Just call GetOrCreate().
Viper-Jacket uses app.conf by default, or you can specify config file with '--conf' flag explicitly.
It can get config value of the file or environment variable using get-or-else style getter.
cfg := GetOrCreate()
defer cfg.Close()
cfg.GetBool("test_viper_config_bool_value", true)
cfg.GetString("test_viper_config_string_value", "default value")
cfg.GetInt("test_viper_config_int_value", 12345)
cfg.GetInt32("test_viper_config_int32_value", 12345)
cfg.GetInt64("test_viper_config_int64_value", 12345)
cfg.GetUint("test_viper_config_uint_value", 12345)
cfg.GetUint32("test_viper_config_uint32_value", 12345)
cfg.GetUint64("test_viper_config_uint64_value", 12345)
cfg.GetFloat64("test_viper_config_float64_value", 123.456)
cfg.GetTime("test_viper_config_time_value", time.Date(2021, 9, 15, 15, 31, 48, 123, time.UTC))
cfg.GetDuration("test_viper_config_duration_value", 12 * time.Second)
cfg.GetIntSlice("test_viper_config_intslice_value", []int{1, 1, 2, 2, 3, 3})
cfg.GetStringSlice("test_viper_config_stringslice_value", []string{"Hello", "World!", "Nice Day!"})
cfg.GetStringMap("test_viper_config_stringmap_value", map[string]interface{}{
"hello": "World!",
"Nice": float64(112233),
"Day": true,
})
cfg.GetStringMapString("test_viper_config_stringmapstring_value", map[string]string{
"Hello": "World!",
"Nice To": "Meet You",
"Me": "Too",
})
cfg.GetStringMapSlice("test_viper_config_stringmapslice_value", map[string][]string{
"test1": {"Hello", "World!"},
"test2": {"Nice", "To"},
"test3": {"Meet", "You"},
})
os.Setenv("WHAT", "bigger")
cfg.GetString("no_exist", "white cow is $WHAT than black cow.")
If the string values of GetString(), GetStringSlice(), GetStringSliceMap() contain environment variables, these will be expanded automatically.
For example $ENV_VAR=viperjacket
- /home/test/$ENV_VAR => /home/test/viperjacket
- /home/test/${ENV_VAR}/temp => /home/test/viperjacket/temp
Some complex Getter failed because viper doesn't support yet. It can be checked in viperjacket_test.go.