From f3cb81e449d7e022499a4a4c53373a9dc7dad4fa Mon Sep 17 00:00:00 2001 From: Sunil Arora Date: Mon, 2 Apr 2018 17:08:52 -0700 Subject: [PATCH] kinflate: added version command --- cmd/kinflate/version/version.go | 68 +++++++++++++++++++++++++++++++ pkg/kinflate/commands/commands.go | 3 ++ 2 files changed, 71 insertions(+) create mode 100644 cmd/kinflate/version/version.go diff --git a/cmd/kinflate/version/version.go b/cmd/kinflate/version/version.go new file mode 100644 index 000000000..5d9cada28 --- /dev/null +++ b/cmd/kinflate/version/version.go @@ -0,0 +1,68 @@ +/* +Copyright 2018 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package version + +import ( + "fmt" + "io" + + "github.com/spf13/cobra" +) + +var ( + kinflateVersion = "unknown" + goos = "unknown" + goarch = "unknown" + gitCommit = "$Format:%H$" // sha1 from git, output of $(git rev-parse HEAD) + + buildDate = "1970-01-01T00:00:00Z" // build date in ISO8601 format, output of $(date -u +'%Y-%m-%dT%H:%M:%SZ') +) + +type Version struct { + KinflateVersion string `json:"kinflateVersion"` + GitCommit string `json:"gitCommit"` + BuildDate string `json:"buildDate"` + GoOs string `json:"goOs"` + GoArch string `json:"goArch"` +} + +func GetVersion() Version { + return Version{ + kinflateVersion, + gitCommit, + buildDate, + goos, + goarch, + } +} + +func (v Version) Print(w io.Writer) { + fmt.Fprintf(w, "Version: %+v\n", v) +} + +// NewCmdVersion makes version command. +func NewCmdVersion(w io.Writer) *cobra.Command { + return &cobra.Command{ + Use: "version", + Short: "Prints the kinflate version.", + Long: `Prints the kinflate version.`, + Example: `kinflate version`, + Run: func(cmd *cobra.Command, args []string) { + GetVersion().Print(w) + }, + } +} diff --git a/pkg/kinflate/commands/commands.go b/pkg/kinflate/commands/commands.go index 590ef3533..81c20bac8 100644 --- a/pkg/kinflate/commands/commands.go +++ b/pkg/kinflate/commands/commands.go @@ -22,6 +22,7 @@ import ( "os" "github.com/spf13/cobra" + "k8s.io/kubectl/cmd/kinflate/version" "k8s.io/kubectl/pkg/kinflate/util/fs" ) @@ -49,6 +50,8 @@ Find more information at: newCmdAdd(stdOut, stdErr, fsys), // 'set' sub command newCmdSet(stdOut, stdErr, fsys), + // version command + version.NewCmdVersion(stdOut), ) // add the glog flags