2024-06-02 07:53:13 +01:00
|
|
|
// SPDX-FileCopyrightText: 2024 Dan Anglin <d.n.i.anglin@gmail.com>
|
|
|
|
//
|
|
|
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
|
2024-05-23 18:06:49 +01:00
|
|
|
package executor
|
2024-02-23 09:44:57 +00:00
|
|
|
|
|
|
|
import (
|
|
|
|
"flag"
|
|
|
|
"os"
|
|
|
|
"strings"
|
2024-06-10 19:36:00 +01:00
|
|
|
"text/tabwriter"
|
2024-02-23 09:44:57 +00:00
|
|
|
)
|
|
|
|
|
2024-05-23 18:06:49 +01:00
|
|
|
type VersionExecutor struct {
|
2024-02-23 09:44:57 +00:00
|
|
|
*flag.FlagSet
|
|
|
|
showFullVersion bool
|
|
|
|
binaryVersion string
|
|
|
|
buildTime string
|
|
|
|
goVersion string
|
|
|
|
gitCommit string
|
|
|
|
}
|
|
|
|
|
2024-05-23 18:06:49 +01:00
|
|
|
func NewVersionExecutor(name, summary, binaryVersion, buildTime, goVersion, gitCommit string) *VersionExecutor {
|
|
|
|
command := VersionExecutor{
|
2024-02-23 09:44:57 +00:00
|
|
|
FlagSet: flag.NewFlagSet(name, flag.ExitOnError),
|
|
|
|
binaryVersion: binaryVersion,
|
|
|
|
buildTime: buildTime,
|
|
|
|
goVersion: goVersion,
|
|
|
|
gitCommit: gitCommit,
|
|
|
|
showFullVersion: false,
|
|
|
|
}
|
|
|
|
|
2024-06-10 18:59:01 +01:00
|
|
|
command.BoolVar(&command.showFullVersion, flagFull, false, "prints the full build information")
|
2024-02-23 09:44:57 +00:00
|
|
|
|
|
|
|
command.Usage = commandUsageFunc(name, summary, command.FlagSet)
|
|
|
|
|
|
|
|
return &command
|
|
|
|
}
|
|
|
|
|
2024-06-10 19:36:00 +01:00
|
|
|
func (v *VersionExecutor) Execute() error {
|
2024-02-23 09:44:57 +00:00
|
|
|
var builder strings.Builder
|
|
|
|
|
2024-06-10 19:36:00 +01:00
|
|
|
if v.showFullVersion {
|
|
|
|
builder.WriteString("Enbas\n")
|
|
|
|
|
|
|
|
tableWriter := tabwriter.NewWriter(&builder, 0, 8, 0, '\t', 0)
|
|
|
|
|
|
|
|
tableWriter.Write([]byte(" Version:\t" + v.binaryVersion + "\n"))
|
|
|
|
tableWriter.Write([]byte(" Git commit:\t" + v.gitCommit + "\n"))
|
|
|
|
tableWriter.Write([]byte(" Go version:\t" + v.goVersion + "\n"))
|
|
|
|
tableWriter.Write([]byte(" Build date:\t" + v.buildTime + "\n"))
|
|
|
|
|
|
|
|
tableWriter.Flush()
|
2024-02-23 09:44:57 +00:00
|
|
|
} else {
|
2024-06-10 19:36:00 +01:00
|
|
|
builder.WriteString("Enbas " + v.binaryVersion + "\n")
|
2024-02-23 09:44:57 +00:00
|
|
|
}
|
|
|
|
|
2024-06-10 19:36:00 +01:00
|
|
|
os.Stdout.WriteString(builder.String())
|
2024-02-23 09:44:57 +00:00
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|