diff options
author | Bjørn Erik Pedersen <[email protected]> | 2022-12-19 15:40:47 +0100 |
---|---|---|
committer | Bjørn Erik Pedersen <[email protected]> | 2022-12-19 20:17:33 +0100 |
commit | 0d4b17d4c03bfcbe3a5959e2c1dc47f4f36e47ed (patch) | |
tree | b3c13b3f3c93c5f37fcd1938ae79327b05c797da | |
parent | 3afaca75844272c309da44d1f4b3b95dc8ee2e6f (diff) | |
download | hugo-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
-rw-r--r-- | hugolib/hugo_sites_build_test.go | 1 | ||||
-rw-r--r-- | hugolib/page_permalink_test.go | 1 | ||||
-rw-r--r-- | modules/config.go | 20 | ||||
-rw-r--r-- | modules/config_test.go | 7 |
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) { |