Skip to content

Commit

Permalink
cmd/go: change Printer.Output -> Printer.Printf for consistency
Browse files Browse the repository at this point in the history
Currently, the Printer interface has `Output`, which acts like Print
and `Errorf`, which acts like Printf. It's confusing that the
formatting style is tied to whether it's regular output or an error.

Fix this by replacing Output with Printf, so both use Printf-style
formatting.

Change-Id: I4c76f941e956f2599c5620b455bf41e21636b44e
Reviewed-on: https://go-review.googlesource.com/c/go/+/627795
Reviewed-by: Russ Cox <rsc@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
  • Loading branch information
aclements committed Nov 17, 2024
1 parent f9a95b1 commit 44d4b69
Show file tree
Hide file tree
Showing 5 changed files with 21 additions and 21 deletions.
16 changes: 8 additions & 8 deletions src/cmd/go/internal/load/printer.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,15 @@ import (

// A Printer reports output about a Package.
type Printer interface {
// Output reports output from building pkg. The arguments are of the form
// expected by fmt.Print.
// Printf reports output from building pkg. The arguments are of the form
// expected by [fmt.Printf].
//
// pkg may be nil if this output is not associated with the build of a
// particular package.
//
// The caller is responsible for checking if printing output is appropriate,
// for example by checking cfg.BuildN or cfg.BuildV.
Output(pkg *Package, args ...any)
Printf(pkg *Package, format string, args ...any)

// Errorf prints output in the form of `log.Errorf` and reports that
// building pkg failed.
Expand Down Expand Up @@ -68,8 +68,8 @@ type TextPrinter struct {
Writer io.Writer
}

func (p *TextPrinter) Output(_ *Package, args ...any) {
fmt.Fprint(p.Writer, args...)
func (p *TextPrinter) Printf(_ *Package, format string, args ...any) {
fmt.Fprintf(p.Writer, format, args...)
}

func (p *TextPrinter) Errorf(_ *Package, format string, args ...any) {
Expand All @@ -92,10 +92,10 @@ type jsonBuildEvent struct {
Output string `json:",omitempty"` // Non-empty if Action == “build-output”
}

func (p *JSONPrinter) Output(pkg *Package, args ...any) {
func (p *JSONPrinter) Printf(pkg *Package, format string, args ...any) {
ev := &jsonBuildEvent{
Action: "build-output",
Output: fmt.Sprint(args...),
Output: fmt.Sprintf(format, args...),
}
if ev.Output == "" {
// There's no point in emitting a completely empty output event.
Expand All @@ -112,7 +112,7 @@ func (p *JSONPrinter) Errorf(pkg *Package, format string, args ...any) {
// For clarity, emit each line as a separate output event.
for len(s) > 0 {
i := strings.IndexByte(s, '\n')
p.Output(pkg, s[:i+1])
p.Printf(pkg, "%s", s[:i+1])
s = s[i+1:]
}
ev := &jsonBuildEvent{
Expand Down
2 changes: 1 addition & 1 deletion src/cmd/go/internal/work/action.go
Original file line number Diff line number Diff line change
Expand Up @@ -298,7 +298,7 @@ func NewBuilder(workDir string) *Builder {
b.backgroundSh = NewShell(b.WorkDir, nil)

if printWorkDir {
b.BackgroundShell().Print("WORK=", b.WorkDir, "\n")
b.BackgroundShell().Printf("WORK=%s\n", b.WorkDir)
}

if err := CheckGOOSARCHPair(cfg.Goos, cfg.Goarch); err != nil {
Expand Down
4 changes: 2 additions & 2 deletions src/cmd/go/internal/work/buildid.go
Original file line number Diff line number Diff line change
Expand Up @@ -618,15 +618,15 @@ func showStdout(b *Builder, c cache.Cache, a *Action, key string) error {
sh.ShowCmd("", "%s # internal", joinUnambiguously(str.StringList("cat", c.OutputFile(stdoutEntry.OutputID))))
}
if !cfg.BuildN {
sh.Print(string(stdout))
sh.Printf("%s", stdout)
}
}
return nil
}

// flushOutput flushes the output being queued in a.
func (b *Builder) flushOutput(a *Action) {
b.Shell(a).Print(string(a.output))
b.Shell(a).Printf("%s", a.output)
a.output = nil
}

Expand Down
4 changes: 2 additions & 2 deletions src/cmd/go/internal/work/exec.go
Original file line number Diff line number Diff line change
Expand Up @@ -520,11 +520,11 @@ func (b *Builder) build(ctx context.Context, a *Action) (err error) {
// different sections of the bootstrap script have to
// be merged, the banners give patch something
// to use to find its context.
sh.Print("\n#\n# " + p.ImportPath + "\n#\n\n")
sh.Printf("\n#\n# %s\n#\n\n", p.ImportPath)
}

if cfg.BuildV {
sh.Print(p.ImportPath + "\n")
sh.Printf("%s\n", p.ImportPath)
}

if p.Error != nil {
Expand Down
16 changes: 8 additions & 8 deletions src/cmd/go/internal/work/shell.go
Original file line number Diff line number Diff line change
Expand Up @@ -71,16 +71,16 @@ func (sh *Shell) pkg() *load.Package {
return sh.action.Package
}

// Print emits a to this Shell's output stream, formatting it like fmt.Print.
// Printf emits a to this Shell's output stream, formatting it like fmt.Printf.
// It is safe to call concurrently.
func (sh *Shell) Print(a ...any) {
func (sh *Shell) Printf(format string, a ...any) {
sh.printLock.Lock()
defer sh.printLock.Unlock()
sh.printer.Output(sh.pkg(), a...)
sh.printer.Printf(sh.pkg(), format, a...)
}

func (sh *Shell) printLocked(a ...any) {
sh.printer.Output(sh.pkg(), a...)
func (sh *Shell) printfLocked(format string, a ...any) {
sh.printer.Printf(sh.pkg(), format, a...)
}

// Errorf reports an error on sh's package and sets the process exit status to 1.
Expand Down Expand Up @@ -371,7 +371,7 @@ func (sh *Shell) ShowCmd(dir string, format string, args ...any) {
if dir != "" && dir != "/" {
if dir != sh.scriptDir {
// Show changing to dir and update the current directory.
sh.printLocked(sh.fmtCmd("", "cd %s\n", dir))
sh.printfLocked("%s", sh.fmtCmd("", "cd %s\n", dir))
sh.scriptDir = dir
}
// Replace scriptDir is our working directory. Replace it
Expand All @@ -383,7 +383,7 @@ func (sh *Shell) ShowCmd(dir string, format string, args ...any) {
cmd = strings.ReplaceAll(" "+cmd, " "+dir, dot)[1:]
}

sh.printLocked(cmd + "\n")
sh.printfLocked("%s\n", cmd)
}

// reportCmd reports the output and exit status of a command. The cmdOut and
Expand Down Expand Up @@ -522,7 +522,7 @@ func (sh *Shell) reportCmd(desc, dir string, cmdOut []byte, cmdErr error) error
a.output = append(a.output, err.Error()...)
} else {
// Write directly to the Builder output.
sh.Print(err.Error())
sh.Printf("%s", err)
}
return nil
}
Expand Down

0 comments on commit 44d4b69

Please sign in to comment.