spruce/internal/cmd/version.go

49 lines
938 B
Go
Raw Normal View History

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
}