modules: Make the module.workspace=off as default (note)

Also, resolve any workspace file relative to the workingDir.

Fixes #10553
This commit is contained in:
Bjørn Erik Pedersen 2022-12-19 15:40:47 +01:00
parent 3afaca7584
commit 0d4b17d4c0
4 changed files with 25 additions and 4 deletions

View file

@ -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)

View file

@ -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()

View file

@ -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

View file

@ -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) {