Skip to content

Commit d2900cb

Browse files
authored
add version subcommand (#36)
* add version subcommand * prepare for --format=json output * Apply suggestion from code review: reintroduce `cobra.NoArgs` * refactor public/private vars and functions
1 parent 2fc5668 commit d2900cb

File tree

3 files changed

+66
-0
lines changed

3 files changed

+66
-0
lines changed

cli/cli.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import (
2727
"strings"
2828
"time"
2929

30+
"github.com/arduino/FirmwareUploader/cli/version"
3031
"github.com/arduino/FirmwareUploader/modules/nina"
3132
"github.com/arduino/FirmwareUploader/modules/sara"
3233
"github.com/arduino/FirmwareUploader/modules/winc"
@@ -49,6 +50,8 @@ func NewCommand() *cobra.Command {
4950
Run: run,
5051
}
5152

53+
firmwareUploaderCli.AddCommand(version.NewCommand())
54+
5255
firmwareUploaderCli.Flags().StringVar(&ctx.PortName, "port", "", "serial port to use for flashing")
5356
firmwareUploaderCli.Flags().StringVar(&ctx.RootCertDir, "certs", "", "root certificate directory")
5457
firmwareUploaderCli.Flags().StringSliceVar(&ctx.Addresses, "address", []string{}, "address (host:port) to fetch and flash root certificate for, multiple values allowed")

cli/version/version.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package version
2+
3+
import (
4+
"fmt"
5+
"os"
6+
7+
v "github.com/arduino/FirmwareUploader/version"
8+
"github.com/spf13/cobra"
9+
)
10+
11+
// NewCommand created a new `version` command
12+
func NewCommand() *cobra.Command {
13+
return &cobra.Command{
14+
Use: "version",
15+
Short: "Shows version number of FirmwareUploader.",
16+
Long: "Shows the version number of FirmwareUploader which is installed on your system.",
17+
Example: " " + os.Args[0] + " version",
18+
Args: cobra.NoArgs,
19+
Run: run,
20+
}
21+
}
22+
23+
func run(cmd *cobra.Command, args []string) {
24+
fmt.Print(v.VersionInfo)
25+
}

version/version.go

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package version
2+
3+
import "fmt"
4+
5+
var (
6+
defaultVersionString = "0.0.0-git"
7+
versionString = ""
8+
commit = ""
9+
date = ""
10+
VersionInfo *info
11+
)
12+
13+
type info struct {
14+
Application string `json:"Application"`
15+
VersionString string `json:"VersionString"`
16+
Commit string `json:"Commit"`
17+
Date string `json:"Date"`
18+
}
19+
20+
func newInfo(application string) *info {
21+
return &info{
22+
Application: application,
23+
VersionString: versionString,
24+
Commit: commit,
25+
Date: date,
26+
}
27+
}
28+
29+
func (i *info) String() string {
30+
return fmt.Sprintf("%s Version: %s Commit: %s Date: %s", i.Application, i.VersionString, i.Commit, i.Date)
31+
}
32+
33+
func init() {
34+
if versionString == "" {
35+
versionString = defaultVersionString
36+
}
37+
VersionInfo = newInfo("FirmwareUploader")
38+
}

0 commit comments

Comments
 (0)