fix: improve version output

Use text/tabwriter to print the version information with aligned
columns.
This commit is contained in:
Dan Anglin 2024-06-10 19:36:00 +01:00
parent c04cd7e8a5
commit ac2e74cac3
Signed by: dananglin
GPG key ID: 0C1D44CFBEE68638

View file

@ -6,9 +6,9 @@ package executor
import ( import (
"flag" "flag"
"fmt"
"os" "os"
"strings" "strings"
"text/tabwriter"
) )
type VersionExecutor struct { type VersionExecutor struct {
@ -37,23 +37,25 @@ func NewVersionExecutor(name, summary, binaryVersion, buildTime, goVersion, gitC
return &command return &command
} }
func (c *VersionExecutor) Execute() error { func (v *VersionExecutor) Execute() error {
var builder strings.Builder var builder strings.Builder
if c.showFullVersion { if v.showFullVersion {
fmt.Fprintf( builder.WriteString("Enbas\n")
&builder,
"Enbas\n Version: %s\n Git commit: %s\n Go version: %s\n Build date: %s\n", tableWriter := tabwriter.NewWriter(&builder, 0, 8, 0, '\t', 0)
c.binaryVersion,
c.gitCommit, tableWriter.Write([]byte(" Version:\t" + v.binaryVersion + "\n"))
c.goVersion, tableWriter.Write([]byte(" Git commit:\t" + v.gitCommit + "\n"))
c.buildTime, tableWriter.Write([]byte(" Go version:\t" + v.goVersion + "\n"))
) tableWriter.Write([]byte(" Build date:\t" + v.buildTime + "\n"))
tableWriter.Flush()
} else { } else {
fmt.Fprintln(&builder, c.binaryVersion) builder.WriteString("Enbas " + v.binaryVersion + "\n")
} }
fmt.Fprint(os.Stdout, builder.String()) os.Stdout.WriteString(builder.String())
return nil return nil
} }