Skip to content

Commit

Permalink
Add JSON/YAML output for kudo version (#1657)
Browse files Browse the repository at this point in the history
Signed-off-by: Andreas Neumann <aneumann@mesosphere.com>
  • Loading branch information
ANeumann82 committed Aug 25, 2020
1 parent 9e56ebc commit cd6cdf7
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 8 deletions.
4 changes: 4 additions & 0 deletions pkg/kudoctl/cmd/output/output.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,10 @@ func (t *Type) AsStringPtr() *string {
return (*string)(t)
}

func (t Type) IsFormattedOutput() bool {
return t != ""
}

func (t Type) Validate() error {
if t == "" {
return nil
Expand Down
2 changes: 1 addition & 1 deletion pkg/kudoctl/cmd/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ and serves as an API aggregation layer.
cmd.AddCommand(newRepoCmd(fs, cmd.OutOrStdout()))
cmd.AddCommand(newSearchCmd(fs, cmd.OutOrStdout()))
cmd.AddCommand(newTestCmd())
cmd.AddCommand(newVersionCmd())
cmd.AddCommand(newVersionCmd(cmd.OutOrStdout()))
cmd.AddCommand(newDiagnosticsCmd(fs))

initGlobalFlags(cmd, cmd.OutOrStdout())
Expand Down
41 changes: 34 additions & 7 deletions pkg/kudoctl/cmd/version.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@ package cmd

import (
"fmt"
"io"

"github.com/spf13/cobra"

"github.com/kudobuilder/kudo/pkg/kudoctl/cmd/output"
"github.com/kudobuilder/kudo/pkg/version"
)

Expand All @@ -13,22 +15,47 @@ var (
kubectl kudo version`
)

type VersionForOutput struct {
Client version.Info `json:"clientVersion"`
}

type versionCmdOpts struct {
out io.Writer
output output.Type
}

// newVersionCmd returns a new initialized instance of the version sub command
func newVersionCmd() *cobra.Command {
func newVersionCmd(out io.Writer) *cobra.Command {
versionCmdOpts := &versionCmdOpts{out: out}

versionCmd := &cobra.Command{
Use: "version",
Short: "Print the current KUDO package version.",
Long: `Print the current installed KUDO package version.`,
Example: versionExample,
RunE: VersionCmd,
RunE: func(cmd *cobra.Command, args []string) error {
return runVersionCmd(versionCmdOpts)
},
}

versionCmd.Flags().StringVarP((*string)(&versionCmdOpts.output), "output", "o", "", "Output format for command results.")

return versionCmd
}

// VersionCmd performs the version sub command
func VersionCmd(cmd *cobra.Command, args []string) error {
kudoVersion := version.Get()
fmt.Printf("KUDO Version: %s\n", fmt.Sprintf("%#v", kudoVersion))
return nil
// runVersionCmd performs the version sub command
func runVersionCmd(opts *versionCmdOpts) error {
if err := opts.output.Validate(); err != nil {
return err
}
v := VersionForOutput{
Client: version.Get(),
}

if opts.output.IsFormattedOutput() {
return output.WriteObject(v, opts.output, opts.out)
}

_, err := fmt.Fprintf(opts.out, "KUDO Version: %s\n", fmt.Sprintf("%#v", v.Client))
return err
}

0 comments on commit cd6cdf7

Please sign in to comment.