summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--hugolib/hugo_sites_build_test.go1
-rw-r--r--hugolib/page_permalink_test.go1
-rw-r--r--modules/config.go20
-rw-r--r--modules/config_test.go7
4 files changed, 25 insertions, 4 deletions
diff --git a/hugolib/hugo_sites_build_test.go b/hugolib/hugo_sites_build_test.go
index c31f94713..d7e8a89c4 100644
--- a/hugolib/hugo_sites_build_test.go
+++ b/hugolib/hugo_sites_build_test.go
@@ -206,6 +206,7 @@ func TestMultiSitesBuild(t *testing.T) {
{multiSiteYAMLConfigTemplate, "yml"},
{multiSiteJSONConfigTemplate, "json"},
} {
+ config := config
t.Run(config.suffix, func(t *testing.T) {
t.Parallel()
doTestMultiSitesBuild(t, config.content, config.suffix)
diff --git a/hugolib/page_permalink_test.go b/hugolib/page_permalink_test.go
index 0939cc1ff..7ea672330 100644
--- a/hugolib/page_permalink_test.go
+++ b/hugolib/page_permalink_test.go
@@ -63,6 +63,7 @@ func TestPermalink(t *testing.T) {
}
for i, test := range tests {
+ i := i
test := test
t.Run(fmt.Sprintf("%s-%d", test.file, i), func(t *testing.T) {
t.Parallel()
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) {