This commit is contained in:
Lukas Wurzinger 2024-12-15 07:52:19 +00:00
parent 9d2be1a960
commit b1f4977263

View file

@ -147,58 +147,66 @@ const (
ModeNamed ModeNamed
) )
func (b Binfo) Summarize(program string, mode SummaryMode) string { func (b Binfo) Summarize(name string, mode SummaryMode) string {
wants := func(test SummaryMode) bool { wants := func(test SummaryMode) bool {
return mode&test == test return mode&test == test
} }
sep := ", " var (
brk string
sep string
)
if wants(ModeMultiline) { if wants(ModeMultiline) {
brk = "\n"
sep = "\n" sep = "\n"
} else {
brk = " "
sep = ", "
} }
parts := make([]string, 4) lines := make([]string, 4)
if wants(ModeModule) { if wants(ModeModule) {
parts = append( lines = append(
parts, lines,
fmt.Sprintf("module %s (%s) (sum %s)", b.Module.Path, b.Module.Version, b.Module.Sum), fmt.Sprintf("module %s (%s) (sum %s)", b.Module.Path, b.Module.Version, b.Module.Sum),
) )
} }
if wants(ModeBuild) { if wants(ModeBuild) {
parts = append( lines = append(
parts, lines,
fmt.Sprintf("built with %s (%s) (mode %s)", b.Build.Compiler, b.Build.GoVersion, b.Build.Mode), fmt.Sprintf("built with %s (%s) (mode %s)", b.Build.Compiler, b.Build.GoVersion, b.Build.Mode),
) )
} }
if wants(ModeCGO) { if wants(ModeCGO) {
if b.CGO.Enabled { if b.CGO.Enabled {
parts = append( lines = append(
parts, lines,
fmt.Sprintf("with cgo (c %q) (cpp %q) (cxx %q) (ld %q)", b.CGO.Flags.C, b.CGO.Flags.CPP, b.CGO.Flags.CXX, b.CGO.Flags.LD), fmt.Sprintf("with cgo (c %q) (cpp %q) (cxx %q) (ld %q)", b.CGO.Flags.C, b.CGO.Flags.CPP, b.CGO.Flags.CXX, b.CGO.Flags.LD),
) )
} else { } else {
parts = append( lines = append(
parts, lines,
"without cgo", "without cgo",
) )
} }
} }
if wants(ModeVCS) { if wants(ModeVCS) {
parts = append( lines = append(
parts, lines,
fmt.Sprintf("via %s (rev %s) (at %s)", b.VCS.Name, b.VCS.Revision, b.VCS.Time.Format("2006-01-02 15:04:05")), fmt.Sprintf("via %s (rev %s) (at %s)", b.VCS.Name, b.VCS.Revision, b.VCS.Time.Format("2006-01-02 15:04:05")),
) )
} }
j := strings.Join(parts, sep) j := strings.Join(lines, sep)
if program == "" { if name == "" {
return j return j
} else { } else {
return fmt.Sprintf("%s:%s%s", program, sep, j) return fmt.Sprintf("%s:%s%s", name, brk, j)
} }
} }