diff --git a/cmd/root.go b/cmd/root.go index 318ce2f..93b65b0 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -13,15 +13,22 @@ import ( "github.com/spf13/cobra" ) +var versionPrint bool + var RootCmd = &cobra.Command{ Use: "boss", Short: "Dependency Manager for Delphi", Long: "Dependency Manager for Delphi", + Run: func(cmd *cobra.Command, args []string) { + printVersion(false) + }, } func Execute() { RootCmd.PersistentFlags().BoolVarP(&env.Global, "global", "g", false, "global environment") RootCmd.PersistentFlags().BoolVarP(&msg.DebugEnable, "debug", "d", false, "debug") + RootCmd.Flags().BoolVarP(&versionPrint, "version", "v", false, "show cli version") + msg.DebugEnable = utils.Contains(os.Args, "-d") setup.Initialize() diff --git a/cmd/version.go b/cmd/version.go index e2adf8f..b49b5c7 100644 --- a/cmd/version.go +++ b/cmd/version.go @@ -1,6 +1,7 @@ package cmd import ( + "encoding/json" "fmt" "github.com/hashload/boss/internal/version" @@ -15,7 +16,7 @@ var versionCmd = &cobra.Command{ Example: ` Print version: boss version`, Run: func(cmd *cobra.Command, args []string) { - printVersion() + printVersion(true) }, } @@ -23,9 +24,16 @@ func init() { RootCmd.AddCommand(versionCmd) } -func printVersion() { +func printVersion(withDetails bool) { v := version.Get() - fmt.Println("Version ", v.Version) - fmt.Println("Git commit ", v.GitCommit) - fmt.Println("Go version ", v.GoVersion) + if withDetails { + jsonVersion, err := json.MarshalIndent(v, "", " ") + if err != nil { + fmt.Println(err) + } else { + fmt.Println(string(jsonVersion)) + } + } else { + fmt.Println(v.Version) + } }