diff --git a/cli/cli.go b/cli/cli.go index af5ea1e0..bf337562 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" @@ -49,6 +50,8 @@ func NewCommand() *cobra.Command { 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..9b288888 --- /dev/null +++ b/cli/version/version.go @@ -0,0 +1,25 @@ +package version + +import ( + "fmt" + "os" + + v "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(v.VersionInfo) +} diff --git a/version/version.go b/version/version.go new file mode 100644 index 00000000..743bbbca --- /dev/null +++ b/version/version.go @@ -0,0 +1,38 @@ +package version + +import "fmt" + +var ( + defaultVersionString = "0.0.0-git" + versionString = "" + commit = "" + date = "" + VersionInfo *info +) + +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() { + if versionString == "" { + versionString = defaultVersionString + } + VersionInfo = newInfo("FirmwareUploader") +}