mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-21 20:46:30 -05:00
Fix OS env override for nested config param only available in theme
Fixes #8346
This commit is contained in:
parent
24c716cac3
commit
7ed56c6941
2 changed files with 52 additions and 37 deletions
|
@ -18,6 +18,7 @@ import (
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"github.com/gohugoio/hugo/common/maps"
|
||||||
"github.com/gohugoio/hugo/common/types"
|
"github.com/gohugoio/hugo/common/types"
|
||||||
|
|
||||||
"github.com/gobwas/glob"
|
"github.com/gobwas/glob"
|
||||||
|
@ -27,8 +28,6 @@ import (
|
||||||
|
|
||||||
"github.com/gohugoio/hugo/cache/filecache"
|
"github.com/gohugoio/hugo/cache/filecache"
|
||||||
|
|
||||||
"github.com/gohugoio/hugo/common/maps"
|
|
||||||
|
|
||||||
"github.com/gohugoio/hugo/parser/metadecoders"
|
"github.com/gohugoio/hugo/parser/metadecoders"
|
||||||
|
|
||||||
"github.com/gohugoio/hugo/common/herrors"
|
"github.com/gohugoio/hugo/common/herrors"
|
||||||
|
@ -167,6 +166,40 @@ func LoadConfig(d ConfigSourceDescriptor, doWithConfig ...func(cfg config.Provid
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// We made this a Glob pattern in Hugo 0.75, we don't need both.
|
||||||
|
if v.GetBool("ignoreVendor") {
|
||||||
|
helpers.Deprecated("--ignoreVendor", "--ignoreVendorPaths **", false)
|
||||||
|
v.Set("ignoreVendorPaths", "**")
|
||||||
|
}
|
||||||
|
|
||||||
|
modulesConfig, err := l.loadModulesConfig(v)
|
||||||
|
if err != nil {
|
||||||
|
return v, configFiles, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Need to run these after the modules are loaded, but before
|
||||||
|
// they are finalized.
|
||||||
|
collectHook := func(m *modules.ModulesConfig) error {
|
||||||
|
if err := loadLanguageSettings(v, nil); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
mods := m.ActiveModules
|
||||||
|
|
||||||
|
// Apply default project mounts.
|
||||||
|
if err := modules.ApplyProjectConfigDefaults(v, mods[0]); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
_, modulesConfigFiles, err := l.collectModules(modulesConfig, v, collectHook)
|
||||||
|
|
||||||
|
if err == nil && len(modulesConfigFiles) > 0 {
|
||||||
|
configFiles = append(configFiles, modulesConfigFiles...)
|
||||||
|
}
|
||||||
|
|
||||||
const delim = "__env__delim"
|
const delim = "__env__delim"
|
||||||
|
|
||||||
// Apply environment overrides
|
// Apply environment overrides
|
||||||
|
@ -222,40 +255,6 @@ func LoadConfig(d ConfigSourceDescriptor, doWithConfig ...func(cfg config.Provid
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// We made this a Glob pattern in Hugo 0.75, we don't need both.
|
|
||||||
if v.GetBool("ignoreVendor") {
|
|
||||||
helpers.Deprecated("--ignoreVendor", "--ignoreVendorPaths **", false)
|
|
||||||
v.Set("ignoreVendorPaths", "**")
|
|
||||||
}
|
|
||||||
|
|
||||||
modulesConfig, err := l.loadModulesConfig(v)
|
|
||||||
if err != nil {
|
|
||||||
return v, configFiles, err
|
|
||||||
}
|
|
||||||
|
|
||||||
// Need to run these after the modules are loaded, but before
|
|
||||||
// they are finalized.
|
|
||||||
collectHook := func(m *modules.ModulesConfig) error {
|
|
||||||
if err := loadLanguageSettings(v, nil); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
mods := m.ActiveModules
|
|
||||||
|
|
||||||
// Apply default project mounts.
|
|
||||||
if err := modules.ApplyProjectConfigDefaults(v, mods[0]); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
_, modulesConfigFiles, err := l.collectModules(modulesConfig, v, collectHook)
|
|
||||||
|
|
||||||
if err == nil && len(modulesConfigFiles) > 0 {
|
|
||||||
configFiles = append(configFiles, modulesConfigFiles...)
|
|
||||||
}
|
|
||||||
|
|
||||||
return v, configFiles, err
|
return v, configFiles, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -483,6 +483,7 @@ func TestLoadConfigWithOsEnvOverrides(t *testing.T) {
|
||||||
|
|
||||||
baseConfig := `
|
baseConfig := `
|
||||||
|
|
||||||
|
theme = "mytheme"
|
||||||
environment = "production"
|
environment = "production"
|
||||||
enableGitInfo = true
|
enableGitInfo = true
|
||||||
intSlice = [5,7,9]
|
intSlice = [5,7,9]
|
||||||
|
@ -501,6 +502,16 @@ quality = 75
|
||||||
|
|
||||||
b := newTestSitesBuilder(t).WithConfigFile("toml", baseConfig)
|
b := newTestSitesBuilder(t).WithConfigFile("toml", baseConfig)
|
||||||
|
|
||||||
|
b.WithSourceFile("themes/mytheme/config.toml", `
|
||||||
|
|
||||||
|
[params]
|
||||||
|
[params.mytheme_section]
|
||||||
|
theme_param="themevalue"
|
||||||
|
[params.mytheme_section2]
|
||||||
|
theme_param="themevalue2"
|
||||||
|
|
||||||
|
`)
|
||||||
|
|
||||||
b.WithEnviron(
|
b.WithEnviron(
|
||||||
"HUGO_ENVIRONMENT", "test",
|
"HUGO_ENVIRONMENT", "test",
|
||||||
"HUGO_NEW", "new", // key not in config.toml
|
"HUGO_NEW", "new", // key not in config.toml
|
||||||
|
@ -510,10 +521,13 @@ quality = 75
|
||||||
"HUGO_STRINGSLICE", `["c", "d"]`,
|
"HUGO_STRINGSLICE", `["c", "d"]`,
|
||||||
"HUGO_INTSLICE", `[5, 8, 9]`,
|
"HUGO_INTSLICE", `[5, 8, 9]`,
|
||||||
"HUGO_FLOATSLICE", `[5.32]`,
|
"HUGO_FLOATSLICE", `[5.32]`,
|
||||||
// https://github.com/gohugoio/hugo/issues/7829
|
// Issue #7829
|
||||||
"HUGOxPARAMSxAPI_CONFIGxAPI_KEY", "new_key",
|
"HUGOxPARAMSxAPI_CONFIGxAPI_KEY", "new_key",
|
||||||
// Delimiters are case sensitive.
|
// Delimiters are case sensitive.
|
||||||
"HUGOxPARAMSxAPI_CONFIGXANOTHER_KEY", "another_key",
|
"HUGOxPARAMSxAPI_CONFIGXANOTHER_KEY", "another_key",
|
||||||
|
// Issue #8346
|
||||||
|
"HUGOxPARAMSxMYTHEME_SECTIONxTHEME_PARAM", "themevalue_changed",
|
||||||
|
"HUGOxPARAMSxMYTHEME_SECTION2xTHEME_PARAM", "themevalue2_changed",
|
||||||
)
|
)
|
||||||
|
|
||||||
b.Build(BuildCfg{})
|
b.Build(BuildCfg{})
|
||||||
|
@ -531,4 +545,6 @@ quality = 75
|
||||||
c.Assert(cfg.Get("intSlice"), qt.DeepEquals, []interface{}{5, 8, 9})
|
c.Assert(cfg.Get("intSlice"), qt.DeepEquals, []interface{}{5, 8, 9})
|
||||||
c.Assert(cfg.Get("params.api_config.api_key"), qt.Equals, "new_key")
|
c.Assert(cfg.Get("params.api_config.api_key"), qt.Equals, "new_key")
|
||||||
c.Assert(cfg.Get("params.api_config.another_key"), qt.Equals, "default another_key")
|
c.Assert(cfg.Get("params.api_config.another_key"), qt.Equals, "default another_key")
|
||||||
|
c.Assert(cfg.Get("params.mytheme_section.theme_param"), qt.Equals, "themevalue_changed")
|
||||||
|
c.Assert(cfg.Get("params.mytheme_section2.theme_param"), qt.Equals, "themevalue2_changed")
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue