]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
modules: Improve console output on hugo mod init
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Thu, 19 Sep 2024 09:40:48 +0000 (11:40 +0200)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Thu, 19 Sep 2024 10:26:04 +0000 (12:26 +0200)
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

modules/client.go

index 70b3ac4855d14ae53b7007d0764fd5307bc4272e..404605c8c1665a1ab3638112a194f8c5a499b48c 100644 (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 {