aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--golings/cmd/hint.go4
-rw-r--r--golings/cmd/list.go4
-rw-r--r--golings/cmd/root.go27
-rw-r--r--golings/cmd/run.go4
-rw-r--r--golings/cmd/verify.go4
-rw-r--r--golings/golings.go28
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
}