mirror of
https://github.com/gohugoio/hugo.git
synced 2025-06-29 04:09:51 +00:00
parent
c745a3e108
commit
bc98e7a80d
2 changed files with 59 additions and 26 deletions
|
@ -357,3 +357,25 @@ All.
|
||||||
|
|
||||||
b.Assert(b.H.Conf.DefaultContentLanguage(), qt.Equals, "sv")
|
b.Assert(b.H.Conf.DefaultContentLanguage(), qt.Equals, "sv")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestDefaultConfigEnvDisableLanguagesIssue13707(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
files := `
|
||||||
|
-- hugo.toml --
|
||||||
|
disableLanguages = []
|
||||||
|
[languages]
|
||||||
|
[languages.en]
|
||||||
|
weight = 1
|
||||||
|
[languages.nn]
|
||||||
|
weight = 2
|
||||||
|
[languages.sv]
|
||||||
|
weight = 3
|
||||||
|
`
|
||||||
|
|
||||||
|
b := hugolib.Test(t, files, hugolib.TestOptWithConfig(func(conf *hugolib.IntegrationTestConfig) {
|
||||||
|
conf.Environ = []string{`HUGO_DISABLELANGUAGES=sv nn`}
|
||||||
|
}))
|
||||||
|
|
||||||
|
b.Assert(len(b.H.Sites), qt.Equals, 1)
|
||||||
|
}
|
||||||
|
|
|
@ -233,40 +233,51 @@ func (l configLoader) applyOsEnvOverrides(environ []string) error {
|
||||||
|
|
||||||
if existing != nil {
|
if existing != nil {
|
||||||
val, err := metadecoders.Default.UnmarshalStringTo(env.Value, existing)
|
val, err := metadecoders.Default.UnmarshalStringTo(env.Value, existing)
|
||||||
if err != nil {
|
if err == nil {
|
||||||
|
val = l.envValToVal(env.Key, val)
|
||||||
|
if owner != nil {
|
||||||
|
owner[nestedKey] = val
|
||||||
|
} else {
|
||||||
|
l.cfg.Set(env.Key, val)
|
||||||
|
}
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
if owner != nil {
|
|
||||||
owner[nestedKey] = val
|
|
||||||
} else {
|
|
||||||
l.cfg.Set(env.Key, val)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if nestedKey != "" {
|
|
||||||
owner[nestedKey] = env.Value
|
|
||||||
} else {
|
|
||||||
var val any
|
|
||||||
key := strings.ReplaceAll(env.Key, delim, ".")
|
|
||||||
_, ok := allDecoderSetups[key]
|
|
||||||
if ok {
|
|
||||||
// A map.
|
|
||||||
if v, err := metadecoders.Default.UnmarshalStringTo(env.Value, map[string]any{}); err == nil {
|
|
||||||
val = v
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if val == nil {
|
|
||||||
// A string.
|
|
||||||
val = l.envStringToVal(key, env.Value)
|
|
||||||
}
|
|
||||||
l.cfg.Set(key, val)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if owner != nil && nestedKey != "" {
|
||||||
|
owner[nestedKey] = env.Value
|
||||||
|
} else {
|
||||||
|
var val any
|
||||||
|
key := strings.ReplaceAll(env.Key, delim, ".")
|
||||||
|
_, ok := allDecoderSetups[key]
|
||||||
|
if ok {
|
||||||
|
// A map.
|
||||||
|
if v, err := metadecoders.Default.UnmarshalStringTo(env.Value, map[string]any{}); err == nil {
|
||||||
|
val = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if val == nil {
|
||||||
|
// A string.
|
||||||
|
val = l.envStringToVal(key, env.Value)
|
||||||
|
}
|
||||||
|
l.cfg.Set(key, val)
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (l *configLoader) envValToVal(k string, v any) any {
|
||||||
|
switch v := v.(type) {
|
||||||
|
case string:
|
||||||
|
return l.envStringToVal(k, v)
|
||||||
|
default:
|
||||||
|
return v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (l *configLoader) envStringToVal(k, v string) any {
|
func (l *configLoader) envStringToVal(k, v string) any {
|
||||||
switch k {
|
switch k {
|
||||||
case "disablekinds", "disablelanguages":
|
case "disablekinds", "disablelanguages":
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue