mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-21 20:46:30 -05:00
parent
575d7f8068
commit
7f058b8bab
2 changed files with 66 additions and 5 deletions
|
@ -297,14 +297,20 @@ func (l configLoader) applyOsEnvOverrides(environ []string) error {
|
||||||
if nestedKey != "" {
|
if nestedKey != "" {
|
||||||
owner[nestedKey] = env.Value
|
owner[nestedKey] = env.Value
|
||||||
} else {
|
} else {
|
||||||
var val any = env.Value
|
var val any
|
||||||
if _, ok := allDecoderSetups[env.Key]; ok {
|
key := strings.ReplaceAll(env.Key, delim, ".")
|
||||||
|
_, ok := allDecoderSetups[key]
|
||||||
|
if ok {
|
||||||
// A map.
|
// 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 {
|
if val == nil {
|
||||||
l.cfg.Set(strings.ReplaceAll(env.Key, delim, "."), val)
|
// A string.
|
||||||
|
val = l.envStringToVal(key, env.Value)
|
||||||
}
|
}
|
||||||
|
l.cfg.Set(key, val)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -312,6 +318,20 @@ func (l configLoader) applyOsEnvOverrides(environ []string) error {
|
||||||
return nil
|
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) {
|
func (l *configLoader) loadConfigMain(d ConfigSourceDescriptor) (config.LoadConfigResult, modules.ModulesConfig, error) {
|
||||||
var res config.LoadConfigResult
|
var res config.LoadConfigResult
|
||||||
|
|
||||||
|
|
|
@ -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) {
|
func TestLoadMultiConfig(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue