From 907f5095914c36d75cdabe21e12ef7ceb633bf6f Mon Sep 17 00:00:00 2001
From: Colin Adler <colin@coder.com>
Date: Wed, 20 May 2020 17:20:14 -0500
Subject: [PATCH] Add version command

---
 cmd/coder/main.go    | 10 +++++++---
 cmd/coder/version.go | 27 +++++++++++++++++++++++++++
 2 files changed, 34 insertions(+), 3 deletions(-)
 create mode 100644 cmd/coder/version.go

diff --git a/cmd/coder/main.go b/cmd/coder/main.go
index eb4afb7c..6f34d152 100644
--- a/cmd/coder/main.go
+++ b/cmd/coder/main.go
@@ -4,13 +4,16 @@ import (
 	"github.com/spf13/pflag"
 	"go.coder.com/cli"
 	"log"
-	"os"
 	"net/http"
 	_ "net/http/pprof"
+	"os"
 )
 
-type rootCmd struct {
-}
+var (
+	version string
+)
+
+type rootCmd struct{}
 
 func (r *rootCmd) Run(fl *pflag.FlagSet) {
 	fl.Usage()
@@ -32,6 +35,7 @@ func (r *rootCmd) Subcommands() []cli.Command {
 		&shellCmd{},
 		&syncCmd{},
 		&urlCmd{},
+		&versionCmd{},
 	}
 }
 
diff --git a/cmd/coder/version.go b/cmd/coder/version.go
new file mode 100644
index 00000000..54065db5
--- /dev/null
+++ b/cmd/coder/version.go
@@ -0,0 +1,27 @@
+package main
+
+import (
+	"fmt"
+	"runtime"
+
+	"github.com/spf13/pflag"
+	"go.coder.com/cli"
+)
+
+type versionCmd struct{}
+
+func (versionCmd) Spec() cli.CommandSpec {
+	return cli.CommandSpec{
+		Name:  "version",
+		Usage: "",
+		Desc:  "Print the currently installed CLI version",
+	}
+}
+
+func (versionCmd) Run(fl *pflag.FlagSet) {
+	fmt.Println(
+		version,
+		runtime.Version(),
+		runtime.GOOS+"/"+runtime.GOARCH,
+	)
+}