Skip to content

Commit 01ca8f8

Browse files
feat(version): add deis version --all (#217)
1 parent 618939c commit 01ca8f8

5 files changed

Lines changed: 87 additions & 11 deletions

File tree

cmd/cmd.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ type Commander interface {
9090
PrintErrln(...interface{}) (int, error)
9191
PrintErr(...interface{}) (int, error)
9292
PrintErrf(string, ...interface{}) (int, error)
93+
Version(bool) error
9394
}
9495

9596
// DeisCmd is an implementation of Commander.

cmd/version.go

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package cmd
2+
3+
import (
4+
deis "github.com/deis/controller-sdk-go"
5+
"github.com/deis/workflow-cli/settings"
6+
"github.com/deis/workflow-cli/version"
7+
)
8+
9+
// Version prints the various CLI versions.
10+
func (d DeisCmd) Version(all bool) error {
11+
if !all {
12+
d.Println(version.Version)
13+
return nil
14+
}
15+
16+
d.Printf("Workflow CLI Version: %s\n", version.Version)
17+
d.Printf("Workflow CLI API Version: %s\n", deis.APIVersion)
18+
19+
s, err := settings.Load(d.ConfigFile)
20+
21+
if err != nil {
22+
return err
23+
}
24+
25+
// retrive version information from deis controller
26+
err = s.Client.Healthcheck()
27+
28+
if err != nil && err != deis.ErrAPIMismatch {
29+
return err
30+
}
31+
32+
d.Printf("Workflow Controller API Version: %s\n", s.Client.ControllerAPIVersion)
33+
return nil
34+
}

cmd/version_test.go

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package cmd
2+
3+
import (
4+
"bytes"
5+
"fmt"
6+
"net/http"
7+
"testing"
8+
9+
"github.com/arschles/assert"
10+
"github.com/deis/controller-sdk-go"
11+
"github.com/deis/workflow-cli/pkg/testutil"
12+
"github.com/deis/workflow-cli/version"
13+
)
14+
15+
func TestVersion(t *testing.T) {
16+
t.Parallel()
17+
cf, server, err := testutil.NewTestServerAndClient()
18+
if err != nil {
19+
t.Fatal(err)
20+
}
21+
defer server.Close()
22+
var b bytes.Buffer
23+
cmdr := DeisCmd{WOut: &b, ConfigFile: cf}
24+
25+
server.Mux.HandleFunc("/healthz", func(w http.ResponseWriter, r *http.Request) {
26+
w.Header().Add("DEIS_API_VERSION", "1234")
27+
w.WriteHeader(200)
28+
})
29+
30+
err = cmdr.Version(true)
31+
assert.NoErr(t, err)
32+
33+
assert.Equal(t, b.String(), fmt.Sprintf(`Workflow CLI Version: %s
34+
Workflow CLI API Version: %s
35+
Workflow Controller API Version: 1234
36+
`, version.Version, deis.APIVersion), "output")
37+
38+
b.Reset()
39+
err = cmdr.Version(false)
40+
assert.NoErr(t, err)
41+
assert.Equal(t, b.String(), version.Version+"\n", "output")
42+
}

deis.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ Use 'git push deis master' to deploy to an application.
149149
case "users":
150150
err = parser.Users(argv, &cmdr)
151151
case "version":
152-
err = parser.Version(argv)
152+
err = parser.Version(argv, &cmdr)
153153
case "whitelist":
154154
err = parser.Whitelist(argv, &cmdr)
155155
default:

parser/version.go

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,25 @@
11
package parser
22

33
import (
4-
"fmt"
5-
6-
"github.com/deis/workflow-cli/version"
4+
"github.com/deis/workflow-cli/cmd"
75
docopt "github.com/docopt/docopt-go"
86
)
97

108
// Version displays the client version
11-
func Version(argv []string) error {
9+
func Version(argv []string, cmdr cmd.Commander) error {
1210
usage := `
1311
Displays the client version.
1412
15-
Usage: deis version
13+
Usage: deis version [options]
1614
17-
Use 'deis help [command]' to learn more.
15+
Options:
16+
-a --all
17+
list api and controller versions
1818
`
19-
if _, err := docopt.Parse(usage, argv, true, "", false, true); err != nil {
19+
args, err := docopt.Parse(usage, argv, true, "", false, true)
20+
if err != nil {
2021
return err
2122
}
2223

23-
fmt.Println(version.Version)
24-
25-
return nil
24+
return cmdr.Version(args["--all"].(bool))
2625
}

0 commit comments

Comments
 (0)