mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-21 20:46:30 -05:00
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
This commit is contained in:
parent
d9bdd37d35
commit
923dd9d1c1
1 changed files with 12 additions and 4 deletions
|
@ -63,6 +63,10 @@ func LoadConfig(d ConfigSourceDescriptor, doWithConfig ...func(cfg config.Provid
|
||||||
var configFiles []string
|
var configFiles []string
|
||||||
|
|
||||||
l := configLoader{ConfigSourceDescriptor: d, cfg: config.New()}
|
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() {
|
for _, name := range d.configFilenames() {
|
||||||
var filename string
|
var filename string
|
||||||
|
@ -125,10 +129,7 @@ func LoadConfig(d ConfigSourceDescriptor, doWithConfig ...func(cfg config.Provid
|
||||||
collectHook := func(m *modules.ModulesConfig) error {
|
collectHook := func(m *modules.ModulesConfig) error {
|
||||||
// We don't need the merge strategy configuration anymore,
|
// We don't need the merge strategy configuration anymore,
|
||||||
// remove it so it doesn't accidentaly show up in other settings.
|
// remove it so it doesn't accidentaly show up in other settings.
|
||||||
l.cfg.WalkParams(func(params ...config.KeyParams) bool {
|
l.deleteMergeStrategies()
|
||||||
params[len(params)-1].Params.DeleteMergeStrategy()
|
|
||||||
return false
|
|
||||||
})
|
|
||||||
|
|
||||||
if err := l.loadLanguageSettings(nil); err != nil {
|
if err := l.loadLanguageSettings(nil); err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -461,6 +462,13 @@ func (l configLoader) loadConfig(configName string) (string, error) {
|
||||||
return filename, nil
|
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 {
|
func (l configLoader) loadLanguageSettings(oldLangs langs.Languages) error {
|
||||||
_, err := langs.LoadLanguageSettings(l.cfg, oldLangs)
|
_, err := langs.LoadLanguageSettings(l.cfg, oldLangs)
|
||||||
return err
|
return err
|
||||||
|
|
Loading…
Reference in a new issue