diff --git a/cmd/doctor.go b/cmd/doctor.go new file mode 100644 index 000000000..ebf66099a --- /dev/null +++ b/cmd/doctor.go @@ -0,0 +1,18 @@ +package main + +import ( + "github.com/deis/helm-dm/dm" + "github.com/deis/helm-dm/kubectl" +) + +func doctor() error { + var runner kubectl.Runner + runner = &kubectl.RealRunner{} + if dm.IsInstalled(runner) { + format.Success("You have everything you need. Go forth my friend!") + } else { + format.Warning("Looks like you don't have DM installed.\nRun: `helm install`") + } + + return nil +} diff --git a/cmd/helm/helm.go b/cmd/helm/helm.go index e044b8be8..0b6816c86 100644 --- a/cmd/helm/helm.go +++ b/cmd/helm/helm.go @@ -67,7 +67,15 @@ func commands() []cli.Command { }, }, { - Name: "doctor", + Name: "doctor", + Usage: "Run a series of checks for necessary prerequisites.", + ArgsUsage: "", + Action: func(c *cli.Context) { + if err := doctor(); err != nil { + format.Error("%s", err) + os.Exit(1) + } + }, }, { Name: "deploy", diff --git a/format/messages.go b/format/messages.go index b90d90851..dcf26736a 100644 --- a/format/messages.go +++ b/format/messages.go @@ -20,3 +20,13 @@ func Info(msg string, v ...interface{}) { func Msg(msg string, v ...interface{}) { fmt.Fprintf(os.Stdout, msg, v...) } + +func Success(msg string, v ...interface{}) { + msg = "[Success] " + msg + "\n" + fmt.Fprintf(os.Stdout, msg, v...) +} + +func Warning(msg string, v ...interface{}) { + msg = "[Warning] " + msg + "\n" + fmt.Fprintf(os.Stdout, msg, v...) +}