summaryrefslogtreecommitdiffstats
path: root/config
diff options
context:
space:
mode:
Diffstat (limited to 'config')
-rw-r--r--config/allconfig/alldecoders.go2
-rw-r--r--config/allconfig/load.go16
2 files changed, 13 insertions, 5 deletions
diff --git a/config/allconfig/alldecoders.go b/config/allconfig/alldecoders.go
index a40a02372..6b8a4568c 100644
--- a/config/allconfig/alldecoders.go
+++ b/config/allconfig/alldecoders.go
@@ -150,7 +150,7 @@ var allDecoderSetups = map[string]decodeWeight{
key: "outputs",
decode: func(d decodeWeight, p decodeConfig) error {
defaults := createDefaultOutputFormats(p.c.OutputFormats.Config)
- m := p.p.GetStringMap("outputs")
+ m := maps.CleanConfigStringMap(p.p.GetStringMap("outputs"))
p.c.Outputs = make(map[string][]string)
for k, v := range m {
s := types.ToStringSlicePreserveString(v)
diff --git a/config/allconfig/load.go b/config/allconfig/load.go
index b9bb38aaf..8551039a0 100644
--- a/config/allconfig/load.go
+++ b/config/allconfig/load.go
@@ -293,11 +293,19 @@ func (l configLoader) applyOsEnvOverrides(environ []string) error {
} else {
l.cfg.Set(env.Key, val)
}
- } else if nestedKey != "" {
- owner[nestedKey] = env.Value
} else {
- // The container does not exist yet.
- l.cfg.Set(strings.ReplaceAll(env.Key, delim, "."), env.Value)
+ if nestedKey != "" {
+ owner[nestedKey] = env.Value
+ } else {
+ var val any = env.Value
+ if _, ok := allDecoderSetups[env.Key]; ok {
+ // A map.
+ val, err = metadecoders.Default.UnmarshalStringTo(env.Value, map[string]interface{}{})
+ }
+ if err == nil {
+ l.cfg.Set(strings.ReplaceAll(env.Key, delim, "."), val)
+ }
+ }
}
}