]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
Add any configured Go Workspace file to the config watcher
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Mon, 19 Dec 2022 14:50:53 +0000 (15:50 +0100)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Mon, 19 Dec 2022 19:17:33 +0000 (20:17 +0100)
Fixes #10556

commands/hugo.go
hugolib/config.go
modules/collect.go
modules/config.go

index e247fca275a0803ed65d782320289c4c11f563cb..d2d99c7fabc5a74e8d350c8a630ef4bbb06f7b3f 100644 (file)
@@ -924,6 +924,7 @@ func (c *commandeer) printChangeDetected(typ string) {
 const (
        configChangeConfig = "config file"
        configChangeGoMod  = "go.mod file"
+       configChangeGoWork = "go work file"
 )
 
 func (c *commandeer) handleEvents(watcher *watcher.Batcher,
@@ -943,6 +944,9 @@ func (c *commandeer) handleEvents(watcher *watcher.Batcher,
                        if strings.Contains(ev.Name, "go.mod") {
                                configChangeType = configChangeGoMod
                        }
+                       if strings.Contains(ev.Name, ".work") {
+                               configChangeType = configChangeGoWork
+                       }
                }
                if !isConfig {
                        // It may be one of the /config folders
index 8444d15d9162cc89628c104f11d636df3194d7c7..9ccb870148010509ef19dd2e79b143d4bd0e0f23 100644 (file)
@@ -417,12 +417,18 @@ func (l configLoader) collectModules(modConfig modules.Config, v1 config.Provide
        // Avoid recreating these later.
        v1.Set("allModules", moduleConfig.ActiveModules)
 
+       // We want to watch these for changes and trigger rebuild on version
+       // changes etc.
        if moduleConfig.GoModulesFilename != "" {
-               // We want to watch this for changes and trigger rebuild on version
-               // changes etc.
+
                configFilenames = append(configFilenames, moduleConfig.GoModulesFilename)
        }
 
+       if moduleConfig.GoWorkspaceFilename != "" {
+               configFilenames = append(configFilenames, moduleConfig.GoWorkspaceFilename)
+
+       }
+
        return moduleConfig.ActiveModules, configFilenames, err
 }
 
index 7d92e30456e32ceb86bd9c73c803ef5b998c610e..ae6df9be9b26b20e7e814b65af6861901946cc1e 100644 (file)
@@ -107,9 +107,15 @@ func (h *Client) collect(tidy bool) (ModulesConfig, *collector) {
                }
        }*/
 
+       var workspaceFilename string
+       if h.ccfg.ModuleConfig.Workspace != WorkspaceDisabled {
+               workspaceFilename = h.ccfg.ModuleConfig.Workspace
+       }
+
        return ModulesConfig{
-               AllModules:        c.modules,
-               GoModulesFilename: c.GoModulesFilename,
+               AllModules:          c.modules,
+               GoModulesFilename:   c.GoModulesFilename,
+               GoWorkspaceFilename: workspaceFilename,
        }, c
 }
 
@@ -122,6 +128,9 @@ type ModulesConfig struct {
 
        // Set if this is a Go modules enabled project.
        GoModulesFilename string
+
+       // Set if a Go workspace file is configured.
+       GoWorkspaceFilename string
 }
 
 func (m *ModulesConfig) setActiveMods(logger loggers.Logger) error {
index 86166300a6338d440541b8528542616693989958..c08d2a4ab84db4d5e4b64f9bccd18b2d391fcd83 100644 (file)
@@ -15,6 +15,7 @@ package modules
 
 import (
        "fmt"
+       "os"
        "path/filepath"
        "strings"
 
@@ -261,6 +262,9 @@ func decodeConfig(cfg config.Provider, pathReplacements map[string]string) (Conf
                                workingDir := cfg.GetString("workingDir")
                                c.Workspace = filepath.Join(workingDir, c.Workspace)
                        }
+                       if _, err := os.Stat(c.Workspace); err != nil {
+                               return c, fmt.Errorf("module workspace %q does not exist", c.Workspace)
+                       }
                }
        }