Skip to content

Commit

Permalink
feat: Add version flag
Browse files Browse the repository at this point in the history
Signed-off-by: Justin Toh <tohjustin@hotmail.com>
  • Loading branch information
tohjustin committed Sep 16, 2021
1 parent 1acc1f1 commit effa046
Show file tree
Hide file tree
Showing 3 changed files with 67 additions and 0 deletions.
48 changes: 48 additions & 0 deletions internal/version/version.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package version

import (
"fmt"
"runtime"
)

var (
gitMajor string // major version, always numeric
gitMinor string // minor version, numeric possibly followed by "+"
gitVersion string // semantic version, derived by build scripts
gitCommit string // sha1 from git, output of $(git rev-parse HEAD)
gitTreeState string // state of git tree, either "clean" or "dirty"
buildDate string // build date in ISO8601 format, output of $(date -u +'%Y-%m-%dT%H:%M:%SZ')
)

// Info defines the version.
type Info struct {
Major string `json:"major,omitempty"`
Minor string `json:"minor,omitempty"`
GitVersion string `json:"gitVersion,omitempty"`
GitCommit string `json:"gitCommit,omitempty"`
GitTreeState string `json:"gitTreeState,omitempty"`
BuildDate string `json:"buildDate,omitempty"`
GoVersion string `json:"goVersion,omitempty"`
Compiler string `json:"compiler,omitempty"`
Platform string `json:"platform,omitempty"`
}

// Get returns metadata and information regarding the version.
func Get() Info {
return Info{
Major: gitMajor,
Minor: gitMinor,
GitVersion: gitVersion,
GitCommit: gitCommit,
GitTreeState: gitTreeState,
BuildDate: buildDate,
GoVersion: runtime.Version(),
Compiler: runtime.Compiler,
Platform: fmt.Sprintf("%s/%s", runtime.GOOS, runtime.GOARCH),
}
}

// String returns info as a human-friendly version string.
func (info Info) String() string {
return info.GitVersion
}
2 changes: 2 additions & 0 deletions pkg/cmd/lineage/lineage.go
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,7 @@ func New(streams genericclioptions.IOStreams) *cobra.Command {
o.ConfigFlags.AddFlags(cmd.Flags())
o.PrintFlags.AddFlags(cmd.Flags())
addLogFlags(cmd.Flags())
addVersionFlag(cmd)

return cmd
}
Expand Down Expand Up @@ -202,6 +203,7 @@ func (o *CmdOptions) Validate() error {
return errors.New("client config, client must be provided")
}

klog.V(4).Infof("Version: %s", getVersion())
klog.V(4).Infof("Namespace: %s", o.Namespace)
klog.V(4).Infof("Resource: %s", o.Resource)
klog.V(4).Infof("ResourceName: %s", o.ResourceName)
Expand Down
17 changes: 17 additions & 0 deletions pkg/cmd/lineage/version.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package lineage

import (
"fmt"

"github.com/spf13/cobra"
"github.com/tohjustin/kube-lineage/internal/version"
)

func getVersion() string {
return fmt.Sprintf("%#v", version.Get())
}

func addVersionFlag(c *cobra.Command) {
c.Version = getVersion()
c.SetVersionTemplate("{{printf \"%s\" .Version}}\n")
}

0 comments on commit effa046

Please sign in to comment.