diff --git a/Makefile b/Makefile index 234272dc453f2eb9f865d20559609639146276b4..06e6e3ec4c20c776ad8bc4cbb2993666eb9845b1 100644 --- a/Makefile +++ b/Makefile @@ -16,9 +16,11 @@ VERSION?=dev-$(shell date +%FT%T%z) KS_BIN?=ks +APIMACHINERY_VER := $(shell dep status | grep k8s.io/apimachinery | awk '{print $$3}') + GO = go EXTRA_GO_FLAGS = -GO_FLAGS = -ldflags="-X main.version=$(VERSION) $(GO_LDFLAGS)" $(EXTRA_GO_FLAGS) +GO_FLAGS = -ldflags="-X main.version=$(VERSION) -X main.apimachineryVersion=$(APIMACHINERY_VER) $(GO_LDFLAGS)" $(EXTRA_GO_FLAGS) GOFMT = gofmt # GINKGO = "go test" also works if you want to avoid ginkgo tool GINKGO = ginkgo diff --git a/cmd/version.go b/cmd/version.go index 190ba7234be9784c23e99e98864048533105c005..e82f465d2f6463b10dd73c0fd414ecd8d7ae48d8 100644 --- a/cmd/version.go +++ b/cmd/version.go @@ -30,14 +30,22 @@ func init() { // Version is overridden by main var Version = "(dev build)" +var APImachineryVersion = "" + var versionCmd = &cobra.Command{ Use: "version", Short: "Print version information for this ksonnet binary", Run: func(cmd *cobra.Command, args []string) { out := cmd.OutOrStdout() + + clientGoVersion := fmt.Sprintf("%s.%s", version.Get().Major, version.Get().Minor) + if APImachineryVersion != "" { + clientGoVersion += fmt.Sprintf("-%s", APImachineryVersion) + } + fmt.Fprintln(out, "ksonnet version:", Version) fmt.Fprintln(out, "jsonnet version:", jsonnet.Version()) - fmt.Fprintln(out, "client-go version:", version.Get()) + fmt.Fprintln(out, "client-go version:", clientGoVersion) }, Long: ` The ` + "`version`" + ` command prints out version info about the current ksonnet CLI, diff --git a/main.go b/main.go index 767f3dfab1143fe53bb71c1b1da59fc95629f27b..df5baa9d14b8f7005538c3656de8c1e965e00e24 100644 --- a/main.go +++ b/main.go @@ -26,9 +26,11 @@ import ( // Version is overridden using `-X main.version` during release builds var version = "(dev build)" +var apimachineryVersion = "" func main() { cmd.Version = version + cmd.APImachineryVersion = apimachineryVersion if err := cmd.RootCmd.Execute(); err != nil { // PersistentPreRunE may not have been run for early