Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/gohugoio/hugo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2021-06-27 13:03:43 +0300
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2021-06-27 13:03:43 +0300
commit923dd9d1c1f649142f3f377109318b07e0f44d5d (patch)
treea55ad5b934aa2f8d5a9594ce9a022fca3bc1e545 /hugolib
parentd9bdd37d35ccd436b4dd470ef99efa372a6a086b (diff)
Fix config loading for "hugo mod init"
We have some commands that will continue even if the config loading fails (e.g. because a module can not be found). In Hugo 0.84.0 we introduced a new `_merge` flag that we removed once the configuration was loaded. But we did not do that in error situations, leading to failures in some situations. This commit fixes that by making sure the configuration is always cleaned before return, even in error situations. Fixes #8697
Diffstat (limited to 'hugolib')
-rw-r--r--hugolib/config.go16
1 files changed, 12 insertions, 4 deletions
diff --git a/hugolib/config.go b/hugolib/config.go
index a0ce98042..3e3700433 100644
--- a/hugolib/config.go
+++ b/hugolib/config.go
@@ -63,6 +63,10 @@ func LoadConfig(d ConfigSourceDescriptor, doWithConfig ...func(cfg config.Provid
var configFiles []string
l := configLoader{ConfigSourceDescriptor: d, cfg: config.New()}
+ // Make sure we always do this, even in error situations,
+ // as we have commands (e.g. "hugo mod init") that will
+ // use a partial configuration to do its job.
+ defer l.deleteMergeStrategies()
for _, name := range d.configFilenames() {
var filename string
@@ -125,10 +129,7 @@ func LoadConfig(d ConfigSourceDescriptor, doWithConfig ...func(cfg config.Provid
collectHook := func(m *modules.ModulesConfig) error {
// We don't need the merge strategy configuration anymore,
// remove it so it doesn't accidentaly show up in other settings.
- l.cfg.WalkParams(func(params ...config.KeyParams) bool {
- params[len(params)-1].Params.DeleteMergeStrategy()
- return false
- })
+ l.deleteMergeStrategies()
if err := l.loadLanguageSettings(nil); err != nil {
return err
@@ -461,6 +462,13 @@ func (l configLoader) loadConfig(configName string) (string, error) {
return filename, nil
}
+func (l configLoader) deleteMergeStrategies() {
+ l.cfg.WalkParams(func(params ...config.KeyParams) bool {
+ params[len(params)-1].Params.DeleteMergeStrategy()
+ return false
+ })
+}
+
func (l configLoader) loadLanguageSettings(oldLangs langs.Languages) error {
_, err := langs.LoadLanguageSettings(l.cfg, oldLangs)
return err