From 9e267c941c5cc1aacdcc36b50df786615197ae22 Mon Sep 17 00:00:00 2001 From: Umberto Baldi Date: Fri, 21 May 2021 12:53:16 +0200 Subject: [PATCH 1/4] add version subcommand --- cli/cli.go | 4 +++- cli/version/version.go | 25 +++++++++++++++++++++++++ version/version.go | 20 ++++++++++++++++++++ 3 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 cli/version/version.go create mode 100644 version/version.go diff --git a/cli/cli.go b/cli/cli.go index af5ea1e0..cfc2de79 100644 --- a/cli/cli.go +++ b/cli/cli.go @@ -27,6 +27,7 @@ import ( "strings" "time" + "github.com/arduino/FirmwareUploader/cli/version" "github.com/arduino/FirmwareUploader/modules/nina" "github.com/arduino/FirmwareUploader/modules/sara" "github.com/arduino/FirmwareUploader/modules/winc" @@ -45,10 +46,11 @@ func NewCommand() *cobra.Command { Short: "FirmwareUploader.", Long: "FirmwareUploader (FirmwareUploader).", Example: " " + os.Args[0] + " [flags...]", - Args: cobra.NoArgs, Run: run, } + firmwareUploaderCli.AddCommand(version.NewCommand()) + firmwareUploaderCli.Flags().StringVar(&ctx.PortName, "port", "", "serial port to use for flashing") firmwareUploaderCli.Flags().StringVar(&ctx.RootCertDir, "certs", "", "root certificate directory") firmwareUploaderCli.Flags().StringSliceVar(&ctx.Addresses, "address", []string{}, "address (host:port) to fetch and flash root certificate for, multiple values allowed") diff --git a/cli/version/version.go b/cli/version/version.go new file mode 100644 index 00000000..59e445a2 --- /dev/null +++ b/cli/version/version.go @@ -0,0 +1,25 @@ +package version + +import ( + "fmt" + "os" + + "github.com/arduino/FirmwareUploader/version" + "github.com/spf13/cobra" +) + +// NewCommand created a new `version` command +func NewCommand() *cobra.Command { + return &cobra.Command{ + Use: "version", + Short: "Shows version number of FirmwareUploader.", + Long: "Shows the version number of FirmwareUploader which is installed on your system.", + Example: " " + os.Args[0] + " version", + Args: cobra.NoArgs, + Run: run, + } +} + +func run(cmd *cobra.Command, args []string) { + fmt.Print(version.String()) +} diff --git a/version/version.go b/version/version.go new file mode 100644 index 00000000..ab077245 --- /dev/null +++ b/version/version.go @@ -0,0 +1,20 @@ +package version + +import "fmt" + +var ( + defaultVersionString = "0.0.0-git" + versionString = "" + commit = "" + date = "" +) + +func String() string { + return fmt.Sprintf("FirmwareUploader Version: %s Commit: %s Date: %s", versionString, commit, date) +} + +func init() { + if versionString == "" { + versionString = defaultVersionString + } +} From 7ac82fd3206cc0f28545cf672320b9c401a4f9c6 Mon Sep 17 00:00:00 2001 From: Umberto Baldi Date: Fri, 21 May 2021 19:18:04 +0200 Subject: [PATCH 2/4] prepare for --format=json output --- cli/version/version.go | 6 ++++-- version/version.go | 20 ++++++++++++++++++-- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/cli/version/version.go b/cli/version/version.go index 59e445a2..2d5f4654 100644 --- a/cli/version/version.go +++ b/cli/version/version.go @@ -4,7 +4,7 @@ import ( "fmt" "os" - "github.com/arduino/FirmwareUploader/version" + v "github.com/arduino/FirmwareUploader/version" "github.com/spf13/cobra" ) @@ -20,6 +20,8 @@ func NewCommand() *cobra.Command { } } +var VersionInfo = v.NewInfo("FirmwareUploader") + func run(cmd *cobra.Command, args []string) { - fmt.Print(version.String()) + fmt.Print(VersionInfo) } diff --git a/version/version.go b/version/version.go index ab077245..adc232e9 100644 --- a/version/version.go +++ b/version/version.go @@ -9,8 +9,24 @@ var ( date = "" ) -func String() string { - return fmt.Sprintf("FirmwareUploader Version: %s Commit: %s Date: %s", versionString, commit, date) +type Info struct { + Application string `json:"Application"` + VersionString string `json:"VersionString"` + Commit string `json:"Commit"` + Date string `json:"Date"` +} + +func NewInfo(application string) *Info { + return &Info{ + Application: application, + VersionString: versionString, + Commit: commit, + Date: date, + } +} + +func (i *Info) String() string { + return fmt.Sprintf("%s Version: %s Commit: %s Date: %s", i.Application, i.VersionString, i.Commit, i.Date) } func init() { From f8759efd177816e0f3684629c126bc663f40cb0a Mon Sep 17 00:00:00 2001 From: umbynos Date: Mon, 24 May 2021 10:24:57 +0200 Subject: [PATCH 3/4] Apply suggestion from code review: reintroduce `cobra.NoArgs` --- cli/cli.go | 1 + 1 file changed, 1 insertion(+) diff --git a/cli/cli.go b/cli/cli.go index cfc2de79..bf337562 100644 --- a/cli/cli.go +++ b/cli/cli.go @@ -46,6 +46,7 @@ func NewCommand() *cobra.Command { Short: "FirmwareUploader.", Long: "FirmwareUploader (FirmwareUploader).", Example: " " + os.Args[0] + " [flags...]", + Args: cobra.NoArgs, Run: run, } From d2daf4824cf6ad53a2444d7205073d8429cd85a5 Mon Sep 17 00:00:00 2001 From: umbynos Date: Mon, 24 May 2021 11:50:24 +0200 Subject: [PATCH 4/4] refactor public/private vars and functions --- cli/version/version.go | 4 +--- version/version.go | 10 ++++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/cli/version/version.go b/cli/version/version.go index 2d5f4654..9b288888 100644 --- a/cli/version/version.go +++ b/cli/version/version.go @@ -20,8 +20,6 @@ func NewCommand() *cobra.Command { } } -var VersionInfo = v.NewInfo("FirmwareUploader") - func run(cmd *cobra.Command, args []string) { - fmt.Print(VersionInfo) + fmt.Print(v.VersionInfo) } diff --git a/version/version.go b/version/version.go index adc232e9..743bbbca 100644 --- a/version/version.go +++ b/version/version.go @@ -7,17 +7,18 @@ var ( versionString = "" commit = "" date = "" + VersionInfo *info ) -type Info struct { +type info struct { Application string `json:"Application"` VersionString string `json:"VersionString"` Commit string `json:"Commit"` Date string `json:"Date"` } -func NewInfo(application string) *Info { - return &Info{ +func newInfo(application string) *info { + return &info{ Application: application, VersionString: versionString, Commit: commit, @@ -25,7 +26,7 @@ func NewInfo(application string) *Info { } } -func (i *Info) String() string { +func (i *info) String() string { return fmt.Sprintf("%s Version: %s Commit: %s Date: %s", i.Application, i.VersionString, i.Commit, i.Date) } @@ -33,4 +34,5 @@ func init() { if versionString == "" { versionString = defaultVersionString } + VersionInfo = newInfo("FirmwareUploader") }