From c7097bbd1146f025987575dd9352ca50bfa00e6a Mon Sep 17 00:00:00 2001 From: JLugagne Date: Thu, 7 Sep 2023 13:34:22 +0200 Subject: [PATCH] remove parents to use env prefix instead to avoid mixing both concepts --- viper.go | 8 ++------ viper_test.go | 6 ++---- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/viper.go b/viper.go index 2ff730f..a05e29e 100644 --- a/viper.go +++ b/viper.go @@ -205,7 +205,6 @@ type Viper struct { envKeyReplacer StringReplacer allowEmptyEnv bool - parents []string config map[string]interface{} override map[string]interface{} defaults map[string]interface{} @@ -232,7 +231,6 @@ func New() *Viper { v.configPermissions = os.FileMode(0o644) v.fs = afero.NewOsFs() v.config = make(map[string]interface{}) - v.parents = []string{} v.override = make(map[string]interface{}) v.defaults = make(map[string]interface{}) v.kvstore = make(map[string]interface{}) @@ -956,9 +954,8 @@ func (v *Viper) Sub(key string) *Viper { } if reflect.TypeOf(data).Kind() == reflect.Map { - subv.parents = append(v.parents, strings.ToLower(key)) subv.automaticEnvApplied = v.automaticEnvApplied - subv.envPrefix = v.envPrefix + subv.envPrefix = v.mergeWithEnvPrefix(key) subv.envKeyReplacer = v.envKeyReplacer subv.config = cast.ToStringMap(data) return subv @@ -1307,10 +1304,9 @@ func (v *Viper) find(lcaseKey string, flagDefault bool) interface{} { // Env override next if v.automaticEnvApplied { - envKey := strings.Join(append(v.parents, lcaseKey), ".") // even if it hasn't been registered, if automaticEnv is used, // check any Get request - if val, ok := v.getEnv(v.mergeWithEnvPrefix(envKey)); ok { + if val, ok := v.getEnv(v.mergeWithEnvPrefix(lcaseKey)); ok { return val } if nested && v.isPathShadowedInAutoEnv(path) != "" { diff --git a/viper_test.go b/viper_test.go index e0bfc57..e49878f 100644 --- a/viper_test.go +++ b/viper_test.go @@ -1604,12 +1604,10 @@ func TestSub(t *testing.T) { assert.Equal(t, (*Viper)(nil), subv) subv = v.Sub("clothing") - assert.Equal(t, subv.parents[0], "clothing") + assert.Equal(t, subv.envPrefix, "CLOTHING") subv = v.Sub("clothing").Sub("pants") - assert.Equal(t, len(subv.parents), 2) - assert.Equal(t, subv.parents[0], "clothing") - assert.Equal(t, subv.parents[1], "pants") + assert.Equal(t, subv.envPrefix, "CLOTHING_PANTS") } var hclWriteExpected = []byte(`"foos" = {