Skip to content

Commit

Permalink
Fix multiple languages in HUGO_DISABLELANGUAGES
Browse files Browse the repository at this point in the history
Fixes #11278
  • Loading branch information
bep committed Jul 27, 2023
1 parent 575d7f8 commit 7f058b8
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 5 deletions.
30 changes: 25 additions & 5 deletions config/allconfig/load.go
Original file line number Diff line number Diff line change
Expand Up @@ -297,21 +297,41 @@ func (l configLoader) applyOsEnvOverrides(environ []string) error {
if nestedKey != "" {
owner[nestedKey] = env.Value
} else {
var val any = env.Value
if _, ok := allDecoderSetups[env.Key]; ok {
var val any
key := strings.ReplaceAll(env.Key, delim, ".")
_, ok := allDecoderSetups[key]
if ok {
// A map.
val, err = metadecoders.Default.UnmarshalStringTo(env.Value, map[string]interface{}{})
if v, err := metadecoders.Default.UnmarshalStringTo(env.Value, map[string]interface{}{}); err == nil {
val = v
}
}
if err == nil {
l.cfg.Set(strings.ReplaceAll(env.Key, delim, "."), val)
if val == nil {
// A string.
val = l.envStringToVal(key, env.Value)
}
l.cfg.Set(key, val)
}
}
}

return nil
}

func (l *configLoader) envStringToVal(k, v string) any {
switch k {
case "disablekinds", "disablelanguages":
if strings.Contains(v, ",") {
return strings.Split(v, ",")
} else {
return strings.Fields(v)
}
default:
return v
}

}

func (l *configLoader) loadConfigMain(d ConfigSourceDescriptor) (config.LoadConfigResult, modules.ModulesConfig, error) {
var res config.LoadConfigResult

Expand Down
41 changes: 41 additions & 0 deletions hugolib/config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -259,6 +259,47 @@ sub: map[sub1:sub1en]

}

func TestDisableRootSlicesFromEnv(t *testing.T) {
t.Parallel()

files := `
-- hugo.toml --
baseURL = "https://example.com"
defaultContentLanguage = "en"
defaultContentLanguageInSubdir = true
[languages]
[languages.en]
weight = 1
[languages.sv]
weight = 2
[languages.no]
weight = 3
-- layouts/index.html --
Home.
`

for _, delim := range []string{" ", ","} {
environ := []string{"HUGO_DISABLELANGUAGES=sv no", "HUGO_DISABLEKINDS=taxonomy term"}
for i, v := range environ {
environ[i] = strings.ReplaceAll(v, " ", delim)
}
b := NewIntegrationTestBuilder(
IntegrationTestConfig{
T: t,
TxtarString: files,
Environ: environ,
BuildCfg: BuildCfg{SkipRender: true},
},
).Build()

conf := b.H.Configs.Base
b.Assert(conf.DisableLanguages, qt.DeepEquals, []string{"sv", "no"})
b.Assert(conf.DisableKinds, qt.DeepEquals, []string{"taxonomy", "term"})
}

}

func TestLoadMultiConfig(t *testing.T) {
t.Parallel()

Expand Down

0 comments on commit 7f058b8

Please sign in to comment.