Skip to content

Commit

Permalink
modules: Fix "hugo mod get -u" with no arguments
Browse files Browse the repository at this point in the history
Fixes #6826
Closes #6825
  • Loading branch information
bep committed Jan 30, 2020
1 parent 8f08cdd commit 49ef647
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 19 deletions.
12 changes: 2 additions & 10 deletions commands/commandeer.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,6 @@ import (

"golang.org/x/sync/semaphore"

"github.com/gohugoio/hugo/modules"

"io/ioutil"

"github.com/gohugoio/hugo/common/herrors"
Expand Down Expand Up @@ -312,14 +310,8 @@ func (c *commandeer) loadConfig(mustHaveConfigFile, running bool) error {
doWithCommandeer,
doWithConfig)

if err != nil {
if mustHaveConfigFile {
return err
}
if err != hugolib.ErrNoConfigFile && !modules.IsNotExist(err) {
return err
}

if err != nil && mustHaveConfigFile {
return err
} else if mustHaveConfigFile && len(configFiles) == 0 {
return hugolib.ErrNoConfigFile
}
Expand Down
1 change: 1 addition & 0 deletions commands/mod.go
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ Run "go help get" for more information. All flags available for "go get" is also
` + commonUsage,
RunE: func(cmd *cobra.Command, args []string) error {
return c.withModsClient(false, func(c *modules.Client) error {

// We currently just pass on the flags we get to Go and
// need to do the flag handling manually.
if len(args) == 1 && args[0] == "-h" {
Expand Down
12 changes: 3 additions & 9 deletions hugolib/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -225,15 +225,12 @@ func LoadConfig(d ConfigSourceDescriptor, doWithConfig ...func(cfg config.Provid
}

_, 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...)
}

return v, configFiles, nil
return v, configFiles, err

}

Expand Down Expand Up @@ -465,9 +462,6 @@ func (l configLoader) collectModules(modConfig modules.Config, v1 *viper.Viper,
v1.Set("modulesClient", modulesClient)

moduleConfig, err := modulesClient.Collect()
if err != nil {
return nil, nil, err
}

// Avoid recreating these later.
v1.Set("allModules", moduleConfig.ActiveModules)
Expand All @@ -478,7 +472,7 @@ func (l configLoader) collectModules(modConfig modules.Config, v1 *viper.Viper,
configFilenames = append(configFilenames, moduleConfig.GoModulesFilename)
}

return moduleConfig.ActiveModules, configFilenames, nil
return moduleConfig.ActiveModules, configFilenames, err

}

Expand Down
27 changes: 27 additions & 0 deletions modules/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -259,6 +259,28 @@ func (c *Client) Vendor() error {

// Get runs "go get" with the supplied arguments.
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 {
errors.Wrapf(err, "failed to get %q", args)
}
Expand Down Expand Up @@ -426,6 +448,11 @@ func (c *Client) runGo(
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)
if !ok {
return errors.Errorf("failed to execute 'go %v': %s %T", args, err, err)
Expand Down

0 comments on commit 49ef647

Please sign in to comment.