diff options
author | Bjørn Erik Pedersen <[email protected]> | 2019-09-03 12:58:02 +0200 |
---|---|---|
committer | Bjørn Erik Pedersen <[email protected]> | 2019-09-03 15:12:33 +0200 |
commit | 43298f028ccdf38e949b573d03d328bf96b998a3 (patch) | |
tree | 9f42576866df3d26e2aee674c2e2c6d28d4efbcb | |
parent | 1b5c7e327c7f98cf8e9fff920f3328198f67a598 (diff) | |
download | hugo-43298f028ccdf38e949b573d03d328bf96b998a3.tar.gz hugo-43298f028ccdf38e949b573d03d328bf96b998a3.zip |
Make the "is this a Hugo Module" logic more lenient
Now we only try to load modules via Go if there is one or more modules imported in project config.
Fixes #6299
-rwxr-xr-x | hugolib/config.toml | 1 | ||||
-rw-r--r-- | hugolib/hugo_modules_test.go | 25 | ||||
-rw-r--r-- | modules/client.go | 4 | ||||
-rw-r--r-- | modules/collect.go | 7 | ||||
-rw-r--r-- | modules/config.go | 11 | ||||
-rw-r--r-- | modules/module.go | 22 |
6 files changed, 40 insertions, 30 deletions
diff --git a/hugolib/config.toml b/hugolib/config.toml new file mode 100755 index 000000000..056315374 --- /dev/null +++ b/hugolib/config.toml @@ -0,0 +1 @@ +workingdir = "/private/var/folders/n6/s_85mm8d31j6yctssnmn_g1r0000gn/T/hugo-no-mod217094359" diff --git a/hugolib/hugo_modules_test.go b/hugolib/hugo_modules_test.go index 826f5f1e5..9ba039c74 100644 --- a/hugolib/hugo_modules_test.go +++ b/hugolib/hugo_modules_test.go @@ -541,3 +541,28 @@ title: "My Page" b.AssertFileContent("public/mypage/index.html", "Permalink: https://example.org/mypage/") } + +// https://github.com/gohugoio/hugo/issues/6299 +func TestSiteWithGoModButNoModules(t *testing.T) { + t.Parallel() + + c := qt.New(t) + // We need to use the OS fs for this. + workDir, clean, err := htesting.CreateTempDir(hugofs.Os, "hugo-no-mod") + c.Assert(err, qt.IsNil) + + cfg := viper.New() + cfg.Set("workingDir", workDir) + fs := hugofs.NewFrom(hugofs.Os, cfg) + + defer clean() + + b := newTestSitesBuilder(t) + b.Fs = fs + + b.WithWorkingDir(workDir).WithViper(cfg) + + b.WithSourceFile("go.mod", "") + b.Build(BuildCfg{}) + +} diff --git a/modules/client.go b/modules/client.go index ae1a6a2b2..a743df5bd 100644 --- a/modules/client.go +++ b/modules/client.go @@ -279,12 +279,12 @@ func (c *Client) Init(path string) error { return nil } -func (c *Client) isProbablyModule(path string) bool { +func isProbablyModule(path string) bool { return module.CheckPath(path) == nil } func (c *Client) listGoMods() (goModules, error) { - if c.GoModulesFilename == "" { + if c.GoModulesFilename == "" || !c.moduleConfig.hasModuleImport() { return nil, nil } diff --git a/modules/collect.go b/modules/collect.go index 24b80a1d7..731a991b8 100644 --- a/modules/collect.go +++ b/modules/collect.go @@ -250,8 +250,7 @@ func (c *collector) add(owner *moduleAdapter, moduleImport Import, disabled bool } if moduleDir == "" { - - if c.GoModulesFilename != "" && c.isProbablyModule(modulePath) { + if c.GoModulesFilename != "" && isProbablyModule(modulePath) { // Try to "go get" it and reload the module configuration. if err := c.Get(modulePath); err != nil { return nil, err @@ -301,10 +300,6 @@ func (c *collector) add(owner *moduleAdapter, moduleImport Import, disabled bool ma.path = modulePath } - if err := ma.validateAndApplyDefaults(c.fs); err != nil { - return nil, err - } - if !moduleImport.IgnoreConfig { if err := c.applyThemeConfig(ma); err != nil { return nil, err diff --git a/modules/config.go b/modules/config.go index 62e6f5e4c..a50845df3 100644 --- a/modules/config.go +++ b/modules/config.go @@ -235,6 +235,17 @@ type Config struct { Private string } +// hasModuleImport reports whether the project config have one or more +// modules imports, e.g. github.com/bep/myshortcodes. +func (c Config) hasModuleImport() bool { + for _, imp := range c.Imports { + if isProbablyModule(imp.Path) { + return true + } + } + return false +} + // HugoVersion holds Hugo binary version requirements for a module. type HugoVersion struct { // The minimum Hugo version that this module works with. diff --git a/modules/module.go b/modules/module.go index f71911617..a5f707635 100644 --- a/modules/module.go +++ b/modules/module.go @@ -18,7 +18,6 @@ package modules import ( "github.com/gohugoio/hugo/config" - "github.com/spf13/afero" ) var _ Module = (*moduleAdapter)(nil) @@ -173,24 +172,3 @@ func (m *moduleAdapter) Watch() bool { return false } - -func (m *moduleAdapter) validateAndApplyDefaults(fs afero.Fs) error { - - /*if len(m.modImport.Mounts) == 0 { - // Create default mount points for every component folder that - // exists in the module. - for _, componentFolder := range files.ComponentFolders { - sourceDir := filepath.Join(dir, componentFolder) - _, err := fs.Stat(sourceDir) - if err == nil { - m.modImport.Mounts = append(m.modImport.Mounts, Mount{ - Source: componentFolder, - Target: componentFolder, - }) - } - } - }*/ - - return nil - -} |