mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-21 20:46:30 -05:00
modules: Fix "hugo mod get -u" with no arguments
Fixes #6826 Closes #6825
This commit is contained in:
parent
8f08cdd0ac
commit
49ef647203
4 changed files with 33 additions and 19 deletions
|
@ -20,8 +20,6 @@ import (
|
||||||
|
|
||||||
"golang.org/x/sync/semaphore"
|
"golang.org/x/sync/semaphore"
|
||||||
|
|
||||||
"github.com/gohugoio/hugo/modules"
|
|
||||||
|
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
|
|
||||||
"github.com/gohugoio/hugo/common/herrors"
|
"github.com/gohugoio/hugo/common/herrors"
|
||||||
|
@ -312,14 +310,8 @@ func (c *commandeer) loadConfig(mustHaveConfigFile, running bool) error {
|
||||||
doWithCommandeer,
|
doWithCommandeer,
|
||||||
doWithConfig)
|
doWithConfig)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil && mustHaveConfigFile {
|
||||||
if mustHaveConfigFile {
|
|
||||||
return err
|
return err
|
||||||
}
|
|
||||||
if err != hugolib.ErrNoConfigFile && !modules.IsNotExist(err) {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
} else if mustHaveConfigFile && len(configFiles) == 0 {
|
} else if mustHaveConfigFile && len(configFiles) == 0 {
|
||||||
return hugolib.ErrNoConfigFile
|
return hugolib.ErrNoConfigFile
|
||||||
}
|
}
|
||||||
|
|
|
@ -77,6 +77,7 @@ Run "go help get" for more information. All flags available for "go get" is also
|
||||||
` + commonUsage,
|
` + commonUsage,
|
||||||
RunE: func(cmd *cobra.Command, args []string) error {
|
RunE: func(cmd *cobra.Command, args []string) error {
|
||||||
return c.withModsClient(false, func(c *modules.Client) error {
|
return c.withModsClient(false, func(c *modules.Client) error {
|
||||||
|
|
||||||
// We currently just pass on the flags we get to Go and
|
// We currently just pass on the flags we get to Go and
|
||||||
// need to do the flag handling manually.
|
// need to do the flag handling manually.
|
||||||
if len(args) == 1 && args[0] == "-h" {
|
if len(args) == 1 && args[0] == "-h" {
|
||||||
|
|
|
@ -225,15 +225,12 @@ func LoadConfig(d ConfigSourceDescriptor, doWithConfig ...func(cfg config.Provid
|
||||||
}
|
}
|
||||||
|
|
||||||
_, modulesConfigFiles, err := l.collectModules(modulesConfig, v, collectHook)
|
_, modulesConfigFiles, err := l.collectModules(modulesConfig, v, collectHook)
|
||||||
if err != nil {
|
|
||||||
return v, configFiles, err
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(modulesConfigFiles) > 0 {
|
if err == nil && len(modulesConfigFiles) > 0 {
|
||||||
configFiles = append(configFiles, modulesConfigFiles...)
|
configFiles = append(configFiles, modulesConfigFiles...)
|
||||||
}
|
}
|
||||||
|
|
||||||
return v, configFiles, nil
|
return v, configFiles, err
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -465,9 +462,6 @@ func (l configLoader) collectModules(modConfig modules.Config, v1 *viper.Viper,
|
||||||
v1.Set("modulesClient", modulesClient)
|
v1.Set("modulesClient", modulesClient)
|
||||||
|
|
||||||
moduleConfig, err := modulesClient.Collect()
|
moduleConfig, err := modulesClient.Collect()
|
||||||
if err != nil {
|
|
||||||
return nil, nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
// Avoid recreating these later.
|
// Avoid recreating these later.
|
||||||
v1.Set("allModules", moduleConfig.ActiveModules)
|
v1.Set("allModules", moduleConfig.ActiveModules)
|
||||||
|
@ -478,7 +472,7 @@ func (l configLoader) collectModules(modConfig modules.Config, v1 *viper.Viper,
|
||||||
configFilenames = append(configFilenames, moduleConfig.GoModulesFilename)
|
configFilenames = append(configFilenames, moduleConfig.GoModulesFilename)
|
||||||
}
|
}
|
||||||
|
|
||||||
return moduleConfig.ActiveModules, configFilenames, nil
|
return moduleConfig.ActiveModules, configFilenames, err
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -259,6 +259,28 @@ func (c *Client) Vendor() error {
|
||||||
|
|
||||||
// Get runs "go get" with the supplied arguments.
|
// Get runs "go get" with the supplied arguments.
|
||||||
func (c *Client) Get(args ...string) error {
|
func (c *Client) Get(args ...string) error {
|
||||||
|
if len(args) == 0 || (len(args) == 1 && args[0] == "-u") {
|
||||||
|
update := len(args) != 0
|
||||||
|
|
||||||
|
// We need to be explicit about the modules to get.
|
||||||
|
for _, m := range c.moduleConfig.Imports {
|
||||||
|
var args []string
|
||||||
|
if update {
|
||||||
|
args = []string{"-u"}
|
||||||
|
}
|
||||||
|
args = append(args, m.Path)
|
||||||
|
if err := c.get(args...); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return c.get(args...)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) get(args ...string) error {
|
||||||
if err := c.runGo(context.Background(), c.logger.Out, append([]string{"get"}, args...)...); err != nil {
|
if err := c.runGo(context.Background(), c.logger.Out, append([]string{"get"}, args...)...); err != nil {
|
||||||
errors.Wrapf(err, "failed to get %q", args)
|
errors.Wrapf(err, "failed to get %q", args)
|
||||||
}
|
}
|
||||||
|
@ -426,6 +448,11 @@ func (c *Client) runGo(
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if strings.Contains(stderr.String(), "invalid version: unknown revision") {
|
||||||
|
// See https://github.com/gohugoio/hugo/issues/6825
|
||||||
|
c.logger.FEEDBACK.Println(`hugo: you need to manually edit go.mod to resolve the unknown revision.`)
|
||||||
|
}
|
||||||
|
|
||||||
_, ok := err.(*exec.ExitError)
|
_, ok := err.(*exec.ExitError)
|
||||||
if !ok {
|
if !ok {
|
||||||
return errors.Errorf("failed to execute 'go %v': %s %T", args, err, err)
|
return errors.Errorf("failed to execute 'go %v': %s %T", args, err, err)
|
||||||
|
|
Loading…
Reference in a new issue