Я хочу добавить команду cobra
в мой go
cli инструмент, который просто печатает версию
var version = "development"
// versionCmd prints mytool version
var versionCmd = &cobra.Command{
Use: "version",
Short: "Print mytool version information",
RunE: func(cmd *cobra.Command, args []string) error {
fmt.Println("mytool version", version)
return nil
},
}
Я могу переопределить (или не делать этого) переменную version
, используя ldflags
▶ go build
▶ ./mytool version
mytool version development
▶ go build -ldflags "-X github.com/myprofile/mytool/cmd.version=$(git describe --tags --always)"
▶ ./mytool version
mytool version cffc487
Однако при выполнении go install
поведение меняется, я не могу переопределить version
var, почему это так?
▶ go build -ldflags "-X github.com/myprofile/mytool/cmd.version=$(git describe --tags --always)"
▶ go install
▶ ~/go/bin/mytool version
mytool version development
Использование
▶ go version
go version go1.14 darwin/amd64