]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
Fix it so disable a module does not disable transitive dependency required by others
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Wed, 23 Aug 2023 10:39:24 +0000 (12:39 +0200)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Wed, 23 Aug 2023 16:05:18 +0000 (18:05 +0200)
The motivation behind the original implementation was probably to show disabled modules when running `hugo mod graph`.

Fixes #11376

config/allconfig/configlanguage.go
config/allconfig/load.go
hugolib/paths/paths.go
modules/client.go
modules/collect.go
modules/module.go
testscripts/commands/mod__disable.txt [new file with mode: 0644]
testscripts/commands/mod_vendor.txt

index 534276c25ba1a1e76fe3b6f12283d8c6ac7c6b5a..27ba00d8204b5112f9562c7fef0ae57f6eb50da4 100644 (file)
@@ -140,7 +140,7 @@ func (c ConfigLanguage) GetConfigSection(s string) any {
                return c.config.Permalinks
        case "minify":
                return c.config.Minify
-       case "activeModules":
+       case "allModules":
                return c.m.Modules
        case "deployment":
                return c.config.Deployment
index b997c28969d35152dd676353822cdb7d55d09720..3af6147da6ad068c7af6d9a1e708c36698fec153 100644 (file)
@@ -84,7 +84,7 @@ func LoadConfig(d ConfigSourceDescriptor) (*Configs, error) {
                return nil, fmt.Errorf("failed to create config: %w", err)
        }
 
-       configs.Modules = moduleConfig.ActiveModules
+       configs.Modules = moduleConfig.AllModules
        configs.ModulesClient = modulesClient
 
        if err := configs.Init(); err != nil {
@@ -471,7 +471,7 @@ func (l *configLoader) loadModules(configs *Configs) (modules.ModulesConfig, *mo
        ex := hexec.New(conf.Security)
 
        hook := func(m *modules.ModulesConfig) error {
-               for _, tc := range m.ActiveModules {
+               for _, tc := range m.AllModules {
                        if len(tc.ConfigFilenames()) > 0 {
                                if tc.Watch() {
                                        l.ModulesConfigFiles = append(l.ModulesConfigFiles, tc.ConfigFilenames()...)
index 817670dbd657fd37cf4f5f813ef65bf507fdc6a8..83d5921e0886a9b580fc5a73552abea583c51458 100644 (file)
@@ -83,7 +83,7 @@ func New(fs *hugofs.Fs, cfg config.AllProvider) (*Paths, error) {
 }
 
 func (p *Paths) AllModules() modules.Modules {
-       return p.Cfg.GetConfigSection("activeModules").(modules.Modules)
+       return p.Cfg.GetConfigSection("allModules").(modules.Modules)
 }
 
 // GetBasePath returns any path element in baseURL if needed.
index 7108c9befde2d8284b59de122b5ec5cb6d78de7f..b41ca142a992e4e6c7cc9768e3d999804877bb25 100644 (file)
@@ -153,10 +153,6 @@ func (c *Client) Graph(w io.Writer) error {
                        continue
                }
 
-               prefix := ""
-               if module.Disabled() {
-                       prefix = "DISABLED "
-               }
                dep := pathVersion(module.Owner()) + " " + pathVersion(module)
                if replace := module.Replace(); replace != nil {
                        if replace.Version() != "" {
@@ -166,7 +162,7 @@ func (c *Client) Graph(w io.Writer) error {
                                dep += " => " + replace.Dir()
                        }
                }
-               fmt.Fprintln(w, prefix+dep)
+               fmt.Fprintln(w, dep)
        }
 
        return nil
index e47563ab778e85427efa9d29f839c4c3cd5e3725..5b5418bcd0362b145655fdf62a9c7ac3b8bb47c9 100644 (file)
@@ -109,11 +109,8 @@ func (h *Client) collect(tidy bool) (ModulesConfig, *collector) {
 }
 
 type ModulesConfig struct {
-       // All modules, including any disabled.
-       AllModules Modules
-
        // All active modules.
-       ActiveModules Modules
+       AllModules Modules
 
        // Set if this is a Go modules enabled project.
        GoModulesFilename string
@@ -123,7 +120,7 @@ type ModulesConfig struct {
 }
 
 func (m ModulesConfig) HasConfigFile() bool {
-       for _, mod := range m.ActiveModules {
+       for _, mod := range m.AllModules {
                if len(mod.ConfigFilenames()) > 0 {
                        return true
                }
@@ -133,18 +130,12 @@ func (m ModulesConfig) HasConfigFile() bool {
 }
 
 func (m *ModulesConfig) setActiveMods(logger loggers.Logger) error {
-       var activeMods Modules
        for _, mod := range m.AllModules {
                if !mod.Config().HugoVersion.IsValid() {
                        logger.Warnf(`Module %q is not compatible with this Hugo version; run "hugo mod graph" for more information.`, mod.Path())
                }
-               if !mod.Disabled() {
-                       activeMods = append(activeMods, mod)
-               }
        }
 
-       m.ActiveModules = activeMods
-
        return nil
 }
 
@@ -228,7 +219,7 @@ func (c *collector) getVendoredDir(path string) (vendoredModule, bool) {
        return v, found
 }
 
-func (c *collector) add(owner *moduleAdapter, moduleImport Import, disabled bool) (*moduleAdapter, error) {
+func (c *collector) add(owner *moduleAdapter, moduleImport Import) (*moduleAdapter, error) {
 
        var (
                mod       *goModule
@@ -316,11 +307,10 @@ func (c *collector) add(owner *moduleAdapter, moduleImport Import, disabled bool
        }
 
        ma := &moduleAdapter{
-               dir:      moduleDir,
-               vendor:   vendored,
-               disabled: disabled,
-               gomod:    mod,
-               version:  version,
+               dir:     moduleDir,
+               vendor:  vendored,
+               gomod:   mod,
+               version: version,
                // This may be the owner of the _vendor dir
                owner: realOwner,
        }
@@ -343,7 +333,7 @@ func (c *collector) add(owner *moduleAdapter, moduleImport Import, disabled bool
        return ma, nil
 }
 
-func (c *collector) addAndRecurse(owner *moduleAdapter, disabled bool) error {
+func (c *collector) addAndRecurse(owner *moduleAdapter) error {
        moduleConfig := owner.Config()
        if owner.projectMod {
                if err := c.applyMounts(Import{}, owner); err != nil {
@@ -352,17 +342,18 @@ func (c *collector) addAndRecurse(owner *moduleAdapter, disabled bool) error {
        }
 
        for _, moduleImport := range moduleConfig.Imports {
-               disabled := disabled || moduleImport.Disable
-
+               if moduleImport.Disable {
+                       continue
+               }
                if !c.isSeen(moduleImport.Path) {
-                       tc, err := c.add(owner, moduleImport, disabled)
+                       tc, err := c.add(owner, moduleImport)
                        if err != nil {
                                return err
                        }
                        if tc == nil || moduleImport.IgnoreImports {
                                continue
                        }
-                       if err := c.addAndRecurse(tc, disabled); err != nil {
+                       if err := c.addAndRecurse(tc); err != nil {
                                return err
                        }
                }
@@ -531,7 +522,7 @@ func (c *collector) collect() {
 
        projectMod := createProjectModule(c.gomods.GetMain(), c.ccfg.WorkingDir, c.moduleConfig)
 
-       if err := c.addAndRecurse(projectMod, false); err != nil {
+       if err := c.addAndRecurse(projectMod); err != nil {
                c.err = err
                return
        }
index 42bd94e7be165844b03ad978fe3c0ded70665053..da963de58922ba102145a70e57629b0a0bc81376 100644 (file)
@@ -40,9 +40,6 @@ type Module interface {
        // Directory holding files for this module.
        Dir() string
 
-       // This module is disabled.
-       Disabled() bool
-
        // Returns whether this is a Go Module.
        IsGoMod() bool
 
@@ -81,7 +78,6 @@ type moduleAdapter struct {
        dir        string
        version    string
        vendor     bool
-       disabled   bool
        projectMod bool
        owner      Module
 
@@ -115,10 +111,6 @@ func (m *moduleAdapter) Dir() string {
        return m.gomod.Dir
 }
 
-func (m *moduleAdapter) Disabled() bool {
-       return m.disabled
-}
-
 func (m *moduleAdapter) IsGoMod() bool {
        return m.gomod != nil
 }
diff --git a/testscripts/commands/mod__disable.txt b/testscripts/commands/mod__disable.txt
new file mode 100644 (file)
index 0000000..f2d65dd
--- /dev/null
@@ -0,0 +1,15 @@
+hugo mod graph
+stdout 'withhugotoml.*commonmod'
+
+-- hugo.toml --
+title = "Hugo Modules Test"
+[module]
+[[module.imports]]
+path="github.com/gohugoio/hugo-mod-integrationtests/withconfigtoml"
+disable = true
+[[module.imports]]
+path="github.com/gohugoio/hugo-mod-integrationtests/withhugotoml"
+-- go.mod --
+module foo
+go 1.19
+
index 8a77776b3df811c0d29c274cb6e4d7952c34aa2d..5ca10aa75293969539bbf02abcfd09a7ccf6728e 100644 (file)
@@ -20,5 +20,6 @@ go 1.19
 
 module github.com/gohugoio/testmod
 -- golden/vendor.txt --
-# github.com/gohugoio/hugo-mod-integrationtests/withconfigtoml v1.0.0
-# github.com/gohugoio/hugo-mod-integrationtests/withhugotoml v1.0.0
+# github.com/gohugoio/hugo-mod-integrationtests/withconfigtoml v1.1.0
+# github.com/gohugoio/hugo-mod-integrationtests/commonmod v0.0.0-20230823103305-919cefe8a425
+# github.com/gohugoio/hugo-mod-integrationtests/withhugotoml v1.1.0