diff options
Diffstat (limited to 'utils/config.go')
-rw-r--r-- | utils/config.go | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/utils/config.go b/utils/config.go index 2e57ec917..786e248ca 100644 --- a/utils/config.go +++ b/utils/config.go @@ -245,6 +245,16 @@ func ReadConfig(r io.Reader, allowEnvironmentOverrides bool) (*model.Config, map var config model.Config unmarshalErr := v.Unmarshal(&config) + // https://github.com/spf13/viper/issues/324 + // https://github.com/spf13/viper/issues/348 + if unmarshalErr == nil { + config.PluginSettings.Plugins = make(map[string]map[string]interface{}) + unmarshalErr = v.UnmarshalKey("pluginsettings.plugins", &config.PluginSettings.Plugins) + } + if unmarshalErr == nil { + config.PluginSettings.PluginStates = make(map[string]*model.PluginState) + unmarshalErr = v.UnmarshalKey("pluginsettings.pluginstates", &config.PluginSettings.PluginStates) + } envConfig := v.EnvSettings() @@ -272,6 +282,10 @@ func newViper(allowEnvironmentOverrides bool) *viper.Viper { defaults := getDefaultsFromStruct(model.Config{}) for key, value := range defaults { + if key == "PluginSettings.Plugins" || key == "PluginSettings.PluginStates" { + continue + } + v.SetDefault(key, value) } |