diff options
Diffstat (limited to 'internal/config/state.go')
-rw-r--r-- | internal/config/state.go | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/internal/config/state.go b/internal/config/state.go index 17fd31e2a..64d87d771 100644 --- a/internal/config/state.go +++ b/internal/config/state.go @@ -41,8 +41,8 @@ func NewState() *ConfigState { viper := viper.New() // Flag 'some-flag-name' becomes env var 'GTS_SOME_FLAG_NAME' - viper.SetEnvPrefix("gts") viper.SetEnvKeyReplacer(strings.NewReplacer("-", "_")) + viper.SetEnvPrefix("gts") // Load appropriate named vals from env viper.AutomaticEnv() @@ -132,9 +132,13 @@ func (st *ConfigState) reloadToViper() { func (st *ConfigState) reloadFromViper() { if err := st.viper.Unmarshal(&st.config, func(c *mapstructure.DecoderConfig) { c.TagName = "name" - c.ZeroFields = true // empty the config struct before we marshal values into it + + // empty config before marshaling + c.ZeroFields = true oldhook := c.DecodeHook + + // Use the TextUnmarshaler interface when decoding. c.DecodeHook = mapstructure.ComposeDecodeHookFunc( mapstructure.TextUnmarshallerHookFunc(), oldhook, |