From 330fa8941152108327504b511c563dacfc3f4c75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Pedersen?= Date: Mon, 19 Dec 2022 17:49:45 +0100 Subject: [PATCH] modules: Adjust watch logic vs workspace use definitions --- docs/content/en/hugo-modules/configuration.md | 4 ++-- modules/config_test.go | 14 +++++++++++--- modules/module.go | 4 +++- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/docs/content/en/hugo-modules/configuration.md b/docs/content/en/hugo-modules/configuration.md index c05201f8a..5b19d2419 100644 --- a/docs/content/en/hugo-modules/configuration.md +++ b/docs/content/en/hugo-modules/configuration.md @@ -23,7 +23,7 @@ proxy = "direct" noProxy = "none" private = "*.*" replacements = "" -workspace = "" +workspace = "off" {{< /code-toggle >}} noVendor @@ -42,7 +42,7 @@ private : Comma separated glob list matching paths that should be treated as private. workspace -: The workspace file to use. This enables Go workspace mode. Note that this can also be set via OS env, e.g. `export HUGO_MODULE_WORKSPACE=/my/hugo.work` This only works with Go 1.18+. +: The workspace file to use. This enables Go workspace mode. Note that this can also be set via OS env, e.g. `export HUGO_MODULE_WORKSPACE=/my/hugo.work` This only works with Go 1.18+. In Hugo `v0.109.0` we changed the default to `off` and we now resolve any relative work filenames relative to the working directory. replacements : A comma separated (or a slice) list of module path to directory replacement mapping, e.g. `github.com/bep/my-theme -> ../..,github.com/bep/shortcodes -> /some/path`. This is mostly useful for temporary locally development of a module, and then it makes sense to set it as an OS environment variable, e.g: `env HUGO_MODULE_REPLACEMENTS="github.com/bep/my-theme -> ../.."`. Any relative path is relate to [themesDir](https://gohugo.io/getting-started/configuration/#all-configuration-settings), and absolute paths are allowed. diff --git a/modules/config_test.go b/modules/config_test.go index 4ded2be66..5c97caaa2 100644 --- a/modules/config_test.go +++ b/modules/config_test.go @@ -14,6 +14,9 @@ package modules import ( + "fmt" + "os" + "path/filepath" "testing" "github.com/gohugoio/hugo/common/hugo" @@ -43,8 +46,9 @@ func TestDecodeConfig(t *testing.T) { c := qt.New(t) c.Run("Basic", func(c *qt.C) { + tempDir := c.TempDir() tomlConfig := ` -workingDir = "/src/project" +workingDir = %q [module] workspace = "hugo.work" [module.hugoVersion] @@ -65,7 +69,11 @@ source="src/markdown/blog" target="content/blog" lang="en" ` - cfg, err := config.FromConfigString(tomlConfig, "toml") + + hugoWorkFilename := filepath.Join(tempDir, "hugo.work") + f, _ := os.Create(hugoWorkFilename) + f.Close() + cfg, err := config.FromConfigString(fmt.Sprintf(tomlConfig, tempDir), "toml") c.Assert(err, qt.IsNil) mcfg, err := DecodeConfig(cfg) @@ -83,7 +91,7 @@ lang="en" c.Assert(hv.IsValid(), qt.Equals, true) } - c.Assert(mcfg.Workspace, qt.Equals, "/src/project/hugo.work") + c.Assert(mcfg.Workspace, qt.Equals, hugoWorkFilename) c.Assert(len(mcfg.Mounts), qt.Equals, 1) c.Assert(len(mcfg.Imports), qt.Equals, 1) diff --git a/modules/module.go b/modules/module.go index 0d094fe87..42bd94e7b 100644 --- a/modules/module.go +++ b/modules/module.go @@ -184,5 +184,7 @@ func (m *moduleAdapter) Watch() bool { return m.Replace().Version() == "" } - return false + // Any module set up in a workspace file will have Indirect set to false. + // That leaves modules inside the read-only module cache. + return !m.gomod.Indirect }