Avoid failing with "module not found" for hugo mod init and similar
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Tue, 31 Aug 2021 10:08:11 +0000 (12:08 +0200)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Tue, 31 Aug 2021 10:08:11 +0000 (12:08 +0200)
Fixes #8940

commands/commandeer.go
hugolib/config.go

index bac96fa7a922d5f08db9b83bf3c7b418a0f81bc8..b2a995ae6fd5524aa6ced966b4ce17d843f5a333 100644 (file)
@@ -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
        }
index aa9c8110485a07d887397d97e8b50012713dbf88..cdce19d6e7ac3a0aa334f43c5126774a1c71f4ad 100644 (file)
@@ -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
 }