51 lines
1 KiB
Go
51 lines
1 KiB
Go
package executor
|
|
|
|
import (
|
|
"flag"
|
|
|
|
"codeflow.dananglin.me.uk/apollo/enbas/internal/printer"
|
|
)
|
|
|
|
type VersionExecutor struct {
|
|
*flag.FlagSet
|
|
|
|
printer *printer.Printer
|
|
showFullVersion bool
|
|
binaryVersion string
|
|
buildTime string
|
|
goVersion string
|
|
gitCommit string
|
|
}
|
|
|
|
func NewVersionExecutor(
|
|
printer *printer.Printer,
|
|
name,
|
|
summary,
|
|
binaryVersion,
|
|
buildTime,
|
|
goVersion,
|
|
gitCommit string,
|
|
) *VersionExecutor {
|
|
command := VersionExecutor{
|
|
FlagSet: flag.NewFlagSet(name, flag.ExitOnError),
|
|
|
|
printer: printer,
|
|
binaryVersion: binaryVersion,
|
|
buildTime: buildTime,
|
|
goVersion: goVersion,
|
|
gitCommit: gitCommit,
|
|
showFullVersion: false,
|
|
}
|
|
|
|
command.BoolVar(&command.showFullVersion, flagFull, false, "prints the full build information")
|
|
|
|
command.Usage = commandUsageFunc(name, summary, command.FlagSet)
|
|
|
|
return &command
|
|
}
|
|
|
|
func (v *VersionExecutor) Execute() error {
|
|
v.printer.PrintVersion(v.showFullVersion, v.binaryVersion, v.buildTime, v.goVersion, v.gitCommit)
|
|
|
|
return nil
|
|
}
|