summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--modules/client.go35
-rw-r--r--testscripts/commands/mod_get.txt15
-rw-r--r--testscripts/commands/mod_get_u.txt20
3 files changed, 62 insertions, 8 deletions
diff --git a/modules/client.go b/modules/client.go
index b41ca142a..b9a2a48d4 100644
--- a/modules/client.go
+++ b/modules/client.go
@@ -318,14 +318,33 @@ func (c *Client) Get(args ...string) error {
patch := update && (args[0] == "-u=patch") //
// We need to be explicit about the modules to get.
- for _, m := range c.moduleConfig.Imports {
- if !isProbablyModule(m.Path) {
- // Skip themes/components stored below /themes etc.
- // There may be false positives in the above, but those
- // should be rare, and they will fail below with an
- // "cannot find module providing ..." message.
- continue
+ var modules []string
+ // Update all active modules if the -u flag presents.
+ if update {
+ mc, coll := c.collect(true)
+ if coll.err != nil {
+ return coll.err
}
+ for _, m := range mc.AllModules {
+ if m.Owner() == nil {
+ continue
+ }
+ modules = append(modules, m.Path())
+ }
+ } else {
+ for _, m := range c.moduleConfig.Imports {
+ if !isProbablyModule(m.Path) {
+ // Skip themes/components stored below /themes etc.
+ // There may be false positives in the above, but those
+ // should be rare, and they will fail below with an
+ // "cannot find module providing ..." message.
+ continue
+ }
+ modules = append(modules, m.Path)
+ }
+ }
+
+ for _, m := range modules {
var args []string
if update && !patch {
@@ -333,7 +352,7 @@ func (c *Client) Get(args ...string) error {
} else if update && patch {
args = append(args, "-u=patch")
}
- args = append(args, m.Path)
+ args = append(args, m)
if err := c.get(args...); err != nil {
return err
diff --git a/testscripts/commands/mod_get.txt b/testscripts/commands/mod_get.txt
new file mode 100644
index 000000000..d11d3b817
--- /dev/null
+++ b/testscripts/commands/mod_get.txt
@@ -0,0 +1,15 @@
+hugo mod get
+stderr 'withhugotoml.*v1.1.0'
+
+-- hugo.toml --
+title = "Hugo Modules Test"
+[module]
+[[module.imports]]
+path="github.com/gohugoio/hugo-mod-integrationtests/withconfigtoml"
+disable = true
+[[module.imports]]
+path="github.com/gohugoio/hugo-mod-integrationtests/withhugotoml"
+-- go.mod --
+module foo
+go 1.20
+
diff --git a/testscripts/commands/mod_get_u.txt b/testscripts/commands/mod_get_u.txt
new file mode 100644
index 000000000..b070309e0
--- /dev/null
+++ b/testscripts/commands/mod_get_u.txt
@@ -0,0 +1,20 @@
+hugo mod get -u
+hugo mod graph
+stdout 'commonmod@v1.0.1.*commonmod2@v1.0.2'
+
+-- hugo.toml --
+title = "Hugo Modules Update Test"
+[module]
+[[module.imports]]
+path="github.com/gohugoio/hugo-mod-integrationtests/withconfigtoml"
+disable = true
+[[module.imports]]
+path="github.com/gohugoio/hugo-mod-integrationtests/withhugotoml"
+-- go.mod --
+module foo
+go 1.20
+require (
+ github.com/gohugoio/hugo-mod-integrationtests/withhugotoml v1.1.0 // indirect
+ github.com/gohugoio/hugo-mod-integrationtests/commonmod v0.0.0-20230823103305-919cefe8a425 // indirect
+)
+