diff options
-rw-r--r-- | golings/cmd/hint.go | 4 | ||||
-rw-r--r-- | golings/cmd/list.go | 4 | ||||
-rw-r--r-- | golings/cmd/root.go | 27 | ||||
-rw-r--r-- | golings/cmd/run.go | 4 | ||||
-rw-r--r-- | golings/cmd/verify.go | 4 | ||||
-rw-r--r-- | golings/golings.go | 28 |
6 files changed, 40 insertions, 31 deletions
diff --git a/golings/cmd/hint.go b/golings/cmd/hint.go index cfa9254..e0b3f08 100644 --- a/golings/cmd/hint.go +++ b/golings/cmd/hint.go @@ -8,10 +8,6 @@ import ( "github.com/spf13/cobra" ) -func init() { - rootCmd.AddCommand(cmdHint) -} - var cmdHint = &cobra.Command{ Use: "hint", Short: "Get a hint for an exercise", diff --git a/golings/cmd/list.go b/golings/cmd/list.go index 8a2855d..b6d5b70 100644 --- a/golings/cmd/list.go +++ b/golings/cmd/list.go @@ -9,10 +9,6 @@ import ( "github.com/spf13/cobra" ) -func init() { - rootCmd.AddCommand(ListCmd("info.toml")) -} - func ListCmd(infoFile string) *cobra.Command { return &cobra.Command{ Use: "list", diff --git a/golings/cmd/root.go b/golings/cmd/root.go index e0164a7..9f40c16 100644 --- a/golings/cmd/root.go +++ b/golings/cmd/root.go @@ -1,23 +1,24 @@ package cmd import ( - "fmt" - "os" - "github.com/spf13/cobra" ) -var rootCmd = &cobra.Command{ - Use: "golings", - Short: "Learn go through interactive exercises", - Run: func(cmd *cobra.Command, args []string) { +func NewRootCmd(version string) *cobra.Command { + rootCmd := &cobra.Command{ + Use: "golings", + Short: "Learn go through interactive exercises", + Version: version, + } + + rootCmd.AddCommand(cmdHint) + rootCmd.AddCommand(ListCmd("info.toml")) + rootCmd.AddCommand(cmdRun) + rootCmd.AddCommand(cmdVerify) - }, + return rootCmd } -func Execute() { - if err := rootCmd.Execute(); err != nil { - fmt.Println(err) - os.Exit(1) - } +func Execute(version string) { + NewRootCmd(version).Execute() } diff --git a/golings/cmd/run.go b/golings/cmd/run.go index 752bb44..0278795 100644 --- a/golings/cmd/run.go +++ b/golings/cmd/run.go @@ -8,10 +8,6 @@ import ( "github.com/spf13/cobra" ) -func init() { - rootCmd.AddCommand(cmdRun) -} - var cmdRun = &cobra.Command{ Use: "run [exercise]", Short: "Run a single exercise", diff --git a/golings/cmd/verify.go b/golings/cmd/verify.go index b8c0176..0d6017c 100644 --- a/golings/cmd/verify.go +++ b/golings/cmd/verify.go @@ -10,10 +10,6 @@ import ( "github.com/spf13/cobra" ) -func init() { - rootCmd.AddCommand(cmdVerify) -} - var cmdVerify = &cobra.Command{ Use: "verify", Short: "Verify all exercises", diff --git a/golings/golings.go b/golings/golings.go index b78c2c6..10de407 100644 --- a/golings/golings.go +++ b/golings/golings.go @@ -1,7 +1,31 @@ package main -import "github.com/mauricioabreu/golings/golings/cmd" +import ( + "fmt" + "runtime" + + "github.com/mauricioabreu/golings/golings/cmd" +) + +var ( + version = "dev" + commit = "none" + date = "unknown" +) func main() { - cmd.Execute() + cmd.Execute(BuildVersion(version, commit, date)) +} + +func BuildVersion(version, commit, date string) string { + result := version + if commit != "" { + result = fmt.Sprintf("%s\ncommit: %s", result, commit) + } + if date != "" { + result = fmt.Sprintf("%s\nbuilt at: %s", result, date) + } + result = fmt.Sprintf("%s\ngoos: %s\ngoarch: %s", result, runtime.GOOS, runtime.GOARCH) + + return result } |