hugo

Unnamed repository; edit this file 'description' to name the repository.

git clone git://git.shimmy1996.com/hugo.git
commit a0489c2dfd3ceb4d0702de0da7a4af3eabce05e5
parent 0fc2ce9e4bf0524994a861b7300e4332f6f8d390
Author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Date:   Tue, 31 Aug 2021 12:08:11 +0200

Avoid failing with "module not found" for hugo mod init and similar

Fixes #8940

Diffstat:
Mcommands/commandeer.go | 7++++++-
Mhugolib/config.go | 6+++++-
2 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/commands/commandeer.go b/commands/commandeer.go
@@ -309,7 +309,12 @@ func (c *commandeer) loadConfig(mustHaveConfigFile, running bool) error {
 		doWithConfig)
 
 	if err != nil {
-		return err
+		// We should improve the error handling here,
+		// but with hugo mod init and similar there is a chicken and egg situation
+		// with modules already configured in config.toml, so ignore those errors.
+		if mustHaveConfigFile || !moduleNotFoundRe.MatchString(err.Error()) {
+			return err
+		}
 	} else if mustHaveConfigFile && len(configFiles) == 0 {
 		return hugolib.ErrNoConfigFile
 	}
diff --git a/hugolib/config.go b/hugolib/config.go
@@ -151,7 +151,7 @@ func LoadConfig(d ConfigSourceDescriptor, doWithConfig ...func(cfg config.Provid
 		return nil
 	}
 
-	_, modulesConfigFiles, err := l.collectModules(modulesConfig, l.cfg, collectHook)
+	_, modulesConfigFiles, modulesCollectErr := l.collectModules(modulesConfig, l.cfg, collectHook)
 	if err != nil {
 		return l.cfg, configFiles, err
 	}
@@ -166,6 +166,10 @@ func LoadConfig(d ConfigSourceDescriptor, doWithConfig ...func(cfg config.Provid
 		return l.cfg, configFiles, err
 	}
 
+	if err == nil {
+		err = modulesCollectErr
+	}
+
 	return l.cfg, configFiles, err
 }