summaryrefslogtreecommitdiffstats
path: root/hugolib
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2021-03-19 11:05:17 +0100
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2021-03-20 13:34:51 +0100
commit7ed56c6941edfdfa42eef2b779020b5d46ca194a (patch)
tree201e93428481a0f73551a541e7c3453ee9440adc /hugolib
parent24c716cac35b0c5476944108e545058749c43e61 (diff)
Fix OS env override for nested config param only available in theme
Fixes #8346
Diffstat (limited to 'hugolib')
-rw-r--r--hugolib/config.go71
-rw-r--r--hugolib/config_test.go18
2 files changed, 52 insertions, 37 deletions
diff --git a/hugolib/config.go b/hugolib/config.go
index 5ef78acf4..fe138bf20 100644
--- a/hugolib/config.go
+++ b/hugolib/config.go
@@ -18,6 +18,7 @@ import (
"path/filepath"
"strings"
+ "github.com/gohugoio/hugo/common/maps"
"github.com/gohugoio/hugo/common/types"
"github.com/gobwas/glob"
@@ -27,8 +28,6 @@ import (
"github.com/gohugoio/hugo/cache/filecache"
- "github.com/gohugoio/hugo/common/maps"
-
"github.com/gohugoio/hugo/parser/metadecoders"
"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"
// 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
}
diff --git a/hugolib/config_test.go b/hugolib/config_test.go
index ecb450067..75f5b9786 100644
--- a/hugolib/config_test.go
+++ b/hugolib/config_test.go
@@ -483,6 +483,7 @@ func TestLoadConfigWithOsEnvOverrides(t *testing.T) {
baseConfig := `
+theme = "mytheme"
environment = "production"
enableGitInfo = true
intSlice = [5,7,9]
@@ -501,6 +502,16 @@ quality = 75
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(
"HUGO_ENVIRONMENT", "test",
"HUGO_NEW", "new", // key not in config.toml
@@ -510,10 +521,13 @@ quality = 75
"HUGO_STRINGSLICE", `["c", "d"]`,
"HUGO_INTSLICE", `[5, 8, 9]`,
"HUGO_FLOATSLICE", `[5.32]`,
- // https://github.com/gohugoio/hugo/issues/7829
+ // Issue #7829
"HUGOxPARAMSxAPI_CONFIGxAPI_KEY", "new_key",
// Delimiters are case sensitive.
"HUGOxPARAMSxAPI_CONFIGXANOTHER_KEY", "another_key",
+ // Issue #8346
+ "HUGOxPARAMSxMYTHEME_SECTIONxTHEME_PARAM", "themevalue_changed",
+ "HUGOxPARAMSxMYTHEME_SECTION2xTHEME_PARAM", "themevalue2_changed",
)
b.Build(BuildCfg{})
@@ -531,4 +545,6 @@ quality = 75
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.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")
}