aboutsummaryrefslogtreecommitdiffhomepage
path: root/modules
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <[email protected]>2022-12-19 15:40:47 +0100
committerBjørn Erik Pedersen <[email protected]>2022-12-19 20:17:33 +0100
commit0d4b17d4c03bfcbe3a5959e2c1dc47f4f36e47ed (patch)
treeb3c13b3f3c93c5f37fcd1938ae79327b05c797da /modules
parent3afaca75844272c309da44d1f4b3b95dc8ee2e6f (diff)
downloadhugo-0d4b17d4c03bfcbe3a5959e2c1dc47f4f36e47ed.tar.gz
hugo-0d4b17d4c03bfcbe3a5959e2c1dc47f4f36e47ed.zip
modules: Make the module.workspace=off as default (note)
Also, resolve any workspace file relative to the workingDir. Fixes #10553
Diffstat (limited to 'modules')
-rw-r--r--modules/config.go20
-rw-r--r--modules/config_test.go7
2 files changed, 23 insertions, 4 deletions
diff --git a/modules/config.go b/modules/config.go
index 08154bc11..86166300a 100644
--- a/modules/config.go
+++ b/modules/config.go
@@ -26,6 +26,8 @@ import (
"github.com/mitchellh/mapstructure"
)
+const WorkspaceDisabled = "off"
+
var DefaultModuleConfig = Config{
// Default to direct, which means "git clone" and similar. We
@@ -41,6 +43,9 @@ var DefaultModuleConfig = Config{
// treated as private.
Private: "*.*",
+ // Default is no workspace resolution.
+ Workspace: WorkspaceDisabled,
+
// A list of replacement directives mapping a module path to a directory
// or a theme component in the themes folder.
// Note that this will turn the component into a traditional theme component
@@ -247,6 +252,16 @@ func decodeConfig(cfg config.Provider, pathReplacements map[string]string) (Conf
c.Mounts[i] = mnt
}
+ if c.Workspace == "" {
+ c.Workspace = WorkspaceDisabled
+ }
+ if c.Workspace != WorkspaceDisabled {
+ c.Workspace = filepath.Clean(c.Workspace)
+ if !filepath.IsAbs(c.Workspace) {
+ workingDir := cfg.GetString("workingDir")
+ c.Workspace = filepath.Join(workingDir, c.Workspace)
+ }
+ }
}
if themeSet {
@@ -294,8 +309,9 @@ type Config struct {
// Configures GOPRIVATE.
Private string
- // Set the workspace file to use, e.g. hugo.work.
- // Enables Go "Workspace" mode.
+ // Defaults to "off".
+ // Set to a work file, e.g. hugo.work, to enable Go "Workspace" mode.
+ // Can be relative to the working directory or absolute.
// Requires Go 1.18+
// See https://tip.golang.org/doc/go1.18
Workspace string
diff --git a/modules/config_test.go b/modules/config_test.go
index 371aab056..4ded2be66 100644
--- a/modules/config_test.go
+++ b/modules/config_test.go
@@ -44,13 +44,13 @@ func TestDecodeConfig(t *testing.T) {
c.Run("Basic", func(c *qt.C) {
tomlConfig := `
+workingDir = "/src/project"
[module]
-
+workspace = "hugo.work"
[module.hugoVersion]
min = "0.54.2"
max = "0.199.0"
extended = true
-
[[module.mounts]]
source="src/project/blog"
target="content/blog"
@@ -83,6 +83,8 @@ lang="en"
c.Assert(hv.IsValid(), qt.Equals, true)
}
+ c.Assert(mcfg.Workspace, qt.Equals, "/src/project/hugo.work")
+
c.Assert(len(mcfg.Mounts), qt.Equals, 1)
c.Assert(len(mcfg.Imports), qt.Equals, 1)
imp := mcfg.Imports[0]
@@ -90,6 +92,7 @@ lang="en"
c.Assert(imp.Mounts[1].Source, qt.Equals, "src/markdown/blog")
c.Assert(imp.Mounts[1].Target, qt.Equals, "content/blog")
c.Assert(imp.Mounts[1].Lang, qt.Equals, "en")
+
})
c.Run("Replacements", func(c *qt.C) {