Skip to content
Permalink
Browse files

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
  • Loading branch information...
bep committed Sep 3, 2019
1 parent 1b5c7e3 commit 43298f028ccdf38e949b573d03d328bf96b998a3
Showing with 40 additions and 30 deletions.
  1. +1 −0 hugolib/config.toml
  2. +25 −0 hugolib/hugo_modules_test.go
  3. +2 −2 modules/client.go
  4. +1 −6 modules/collect.go
  5. +11 −0 modules/config.go
  6. +0 −22 modules/module.go
@@ -0,0 +1 @@
workingdir = "/private/var/folders/n6/s_85mm8d31j6yctssnmn_g1r0000gn/T/hugo-no-mod217094359"
@@ -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{})

}
@@ -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
}

@@ -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
@@ -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.
@@ -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

}

0 comments on commit 43298f0

Please sign in to comment.
You can’t perform that action at this time.