spruce/internal/cmd/version.go
Dan Anglin 2c5c7332be
refactor: move the subcommands to internal
Move the subcommands and FlagSets to a new internal package.
2023-08-12 10:26:23 +01:00

48 lines
938 B
Go

package cmd
import (
"flag"
"fmt"
)
type VersionCommand struct {
*flag.FlagSet
fullVersion bool
binaryVersion string
buildTime string
goVersion string
gitCommit string
}
func NewVersionCommand(binaryVersion, buildTime, goVersion, gitCommit string) *VersionCommand {
vc := VersionCommand{
FlagSet: flag.NewFlagSet("version", flag.ExitOnError),
binaryVersion: binaryVersion,
buildTime: buildTime,
goVersion: goVersion,
gitCommit: gitCommit,
}
vc.BoolVar(&vc.fullVersion, "full", false, "prints the full version")
return &vc
}
func (v *VersionCommand) Run() error {
var version string
if v.fullVersion {
fullVersionFmt := `Spruce
Version: %s
Git commit: %s
Go version: %s
Build date: %s
`
version = fmt.Sprintf(fullVersionFmt, v.binaryVersion, v.gitCommit, v.goVersion, v.buildTime)
} else {
version = v.binaryVersion + "\n"
}
fmt.Print(version)
return nil
}