[dubboctl] add version command (#746)
diff --git a/dubboctl/cmd/root.go b/dubboctl/cmd/root.go
index e643c40..4cafabe 100644
--- a/dubboctl/cmd/root.go
+++ b/dubboctl/cmd/root.go
@@ -28,6 +28,7 @@
"github.com/apache/dubbo-kubernetes/dubboctl/pkg/sdk"
"github.com/apache/dubbo-kubernetes/dubboctl/pkg/util"
"github.com/apache/dubbo-kubernetes/dubboctl/pkg/validate"
+ "github.com/apache/dubbo-kubernetes/dubboctl/pkg/version"
"github.com/apache/dubbo-kubernetes/operator/cmd/cluster"
"github.com/spf13/cobra"
"net/http"
@@ -123,10 +124,6 @@
rootCmd.AddCommand(validateCmd)
hideFlags(validateCmd, ChartFlag)
- // versionCmd := version.NewVersionCommand(ctx)
- // rootCmd.AddCommand(versionCmd)
- // hideFlags(versionCmd, ChartFlag)
-
createCmd := CreateCmd(ctx, rootCmd, factory)
rootCmd.AddCommand(createCmd)
hideFlags(createCmd, ChartFlag)
@@ -139,8 +136,9 @@
rootCmd.AddCommand(imageCmd)
hideFlags(imageCmd, ChartFlag)
- return rootCmd
+ rootCmd.AddCommand(version.NewVersionCommand())
+ return rootCmd
}
func hideFlags(origin *cobra.Command, hide ...string) {
diff --git a/dubboctl/pkg/version/version.go b/dubboctl/pkg/version/version.go
index f984a60..41b9f77 100644
--- a/dubboctl/pkg/version/version.go
+++ b/dubboctl/pkg/version/version.go
@@ -18,13 +18,23 @@
package version
import (
- "github.com/apache/dubbo-kubernetes/dubboctl/pkg/cli"
- dubboVersion "github.com/apache/dubbo-kubernetes/pkg/version"
+ "fmt"
+ "github.com/apache/dubbo-kubernetes/pkg/version"
"github.com/spf13/cobra"
+ "github.com/spf13/pflag"
+ "os"
)
-func NewVersionCommand(_ cli.Context) *cobra.Command {
+func NewVersionCommand() *cobra.Command {
var versionCmd *cobra.Command
- versionCmd = dubboVersion.CobraCommandWithOptions()
+ versionCmd = version.CobraCommandWithOptions()
+ versionCmd.Flags().VisitAll(func(flag *pflag.Flag) {
+ if flag.Name == "short" {
+ err := flag.Value.Set("true")
+ if err != nil {
+ fmt.Fprintf(os.Stdout, "set flag %q as true failed due to error %v", flag.Name, err)
+ }
+ }
+ })
return versionCmd
}
diff --git a/pkg/version/cobra.go b/pkg/version/cobra.go
index dccc244..50ff6be 100644
--- a/pkg/version/cobra.go
+++ b/pkg/version/cobra.go
@@ -18,25 +18,17 @@
package version
import (
- "encoding/json"
- "errors"
"fmt"
"github.com/spf13/cobra"
- "sigs.k8s.io/yaml"
)
type Version struct {
- ClientVersion *BuildInfo `json:"clientVersion,omitempty" yaml:"clientVersion,omitempty"`
+ ClientVersion *BuildVersion `json:"clientVersion,omitempty" yaml:"clientVersion,omitempty"`
}
-var (
- Info BuildInfo
-)
-
func CobraCommandWithOptions() *cobra.Command {
var (
short bool
- output string
version Version
)
ves := &cobra.Command{
@@ -44,33 +36,14 @@
Short: "Display the information of the currently built version",
Long: "The version command displays the information of the currently built version.",
RunE: func(cmd *cobra.Command, args []string) error {
- if output != "" && output != "yaml" && output != "json" {
- return errors.New(`--output must be 'yaml' or 'json'`)
+ version.ClientVersion = &Cobra
+ if short {
+ _, _ = fmt.Fprintf(cmd.OutOrStdout(), "client version: %s\n", version.ClientVersion.Version)
}
- version.ClientVersion = &Info
- switch output {
- case "":
- if short {
- _, _ = fmt.Fprintf(cmd.OutOrStdout(), "client version: %s\n", version.ClientVersion.Version)
-
- } else {
- _, _ = fmt.Fprintf(cmd.OutOrStdout(), "client version: %s\n", version.ClientVersion.LongForm())
- }
- case "yaml":
- if marshaled, err := yaml.Marshal(&version); err == nil {
- _, _ = fmt.Fprintln(cmd.OutOrStdout(), string(marshaled))
- }
- case "json":
- if marshaled, err := json.MarshalIndent(&version, "", " "); err == nil {
- _, _ = fmt.Fprintln(cmd.OutOrStdout(), string(marshaled))
- }
- }
-
return nil
},
}
ves.Flags().BoolVarP(&short, "short", "s", false, "Use --short=false to generate full version information")
- ves.Flags().StringVarP(&output, "output", "o", "", "One of 'yaml' or 'json'.")
return ves
}
diff --git a/pkg/version/version.go b/pkg/version/version.go
index 56dce90..8ae9ffe 100644
--- a/pkg/version/version.go
+++ b/pkg/version/version.go
@@ -24,26 +24,28 @@
)
var (
- buildVersion = "unknown"
+ buildVersion = "unknown"
+ buildGitRevision = "unknown"
+ buildStatus = "unknown"
+ buildTag = "unknown"
)
-// type BuildInfo struct {
-// Version string `json:"version"`
-// }
-
-func (b BuildInfo) String() string {
- return fmt.Sprintf("%v", b.Version)
+type BuildVersion struct {
+ Version string `json:"version"`
+ GitRevision string `json:"revision"`
+ GolangVersion string `json:"golang_version"`
+ BuildStatus string `json:"status"`
+ GitTag string `json:"tag"`
}
-func (b BuildInfo) LongForm() string {
- return fmt.Sprintf("%#v", b)
+func (b BuildVersion) String() string {
+ return fmt.Sprintf("%v-%v-%v",
+ b.Version,
+ b.GitRevision,
+ b.BuildStatus)
}
-func init() {
- Info = BuildInfo{
- Version: buildVersion,
- }
-}
+var Cobra BuildVersion
var (
Product = "Dubbo"
@@ -127,4 +129,12 @@
BuildDate: buildDate,
BasedOnDubbo: basedOndubbo,
}
+
+ Cobra = BuildVersion{
+ Version: buildVersion,
+ GitRevision: buildGitRevision,
+ GolangVersion: runtime.Version(),
+ BuildStatus: buildStatus,
+ GitTag: buildTag,
+ }
}