modules: Improve console output on hugo mod init

Replace some of the stderr output from the Go command to match the Hugo commands needed:

```
go: creating new go.mod: module github.com/bep/foo
hugo: to add module requirements and sums:
hugo mod tidy
```

See #11458
This commit is contained in:
Bjørn Erik Pedersen 2024-09-19 11:40:48 +02:00
parent e363964f2f
commit 22a9f3fc98

View file

@ -633,7 +633,7 @@ func (c *Client) runGo(
argsv := collections.StringSliceToInterfaceSlice(args)
argsv = append(argsv, hexec.WithEnviron(c.environ))
argsv = append(argsv, hexec.WithStderr(io.MultiWriter(stderr, os.Stderr)))
argsv = append(argsv, hexec.WithStderr(goOutputReplacerWriter{w: io.MultiWriter(stderr, os.Stderr)}))
argsv = append(argsv, hexec.WithStdout(stdout))
argsv = append(argsv, hexec.WithDir(c.ccfg.WorkingDir))
argsv = append(argsv, hexec.WithContext(ctx))
@ -679,6 +679,24 @@ If you then run 'hugo mod graph' it should resolve itself to the most recent ver
return nil
}
var goOutputReplacer = strings.NewReplacer(
"go: to add module requirements and sums:", "hugo: to add module requirements and sums:",
"go mod tidy", "hugo mod tidy",
)
type goOutputReplacerWriter struct {
w io.Writer
}
func (w goOutputReplacerWriter) Write(p []byte) (n int, err error) {
s := goOutputReplacer.Replace(string(p))
_, err = w.w.Write([]byte(s))
if err != nil {
return 0, err
}
return len(p), nil
}
func (c *Client) tidy(mods Modules, goModOnly bool) error {
isGoMod := make(map[string]bool)
for _, m := range mods {