URI: 
       Make the "is this a Hugo Module" logic more lenient - hugo - [fork] hugo port for 9front
  HTML git clone git@git.drkhsh.at/hugo.git
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
   DIR README
   DIR LICENSE
       ---
   DIR commit 43298f028ccdf38e949b573d03d328bf96b998a3
   DIR parent 1b5c7e327c7f98cf8e9fff920f3328198f67a598
  HTML Author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
       Date:   Tue,  3 Sep 2019 12:58:02 +0200
       
       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
       
       Diffstat:
         A hugolib/config.toml                 |       1 +
         M hugolib/hugo_modules_test.go        |      25 +++++++++++++++++++++++++
         M modules/client.go                   |       4 ++--
         M modules/collect.go                  |       7 +------
         M modules/config.go                   |      11 +++++++++++
         M modules/module.go                   |      22 ----------------------
       
       6 files changed, 40 insertions(+), 30 deletions(-)
       ---
   DIR diff --git a/hugolib/config.toml b/hugolib/config.toml
       @@ -0,0 +1 @@
       +workingdir = "/private/var/folders/n6/s_85mm8d31j6yctssnmn_g1r0000gn/T/hugo-no-mod217094359"
   DIR diff --git 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{})
       +
       +}
   DIR diff --git 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
                }
        
   DIR diff --git 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
   DIR diff --git 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.
   DIR diff --git 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
       -
       -}