Consolidate calls to exec.Command

Besides creating a helper method to run exec this also pipe stdout/err
from each call to the screen so that the user gets better feedback on
what is happening and why it might have failed.
pull/1/head
Darren Shepherd 6 years ago
parent 410f3a03ba
commit ecc6a375e2
  1. 30
      main.go

@ -39,8 +39,7 @@ func createCluster(c *cli.Context) error {
"--https-listen-port", c.String("port"), //args
)
log.Printf("Creating cluster [%s]", c.String("name"))
log.Printf("Running command: %+v", exec.Command(cmd, args...).Args)
if err := exec.Command(cmd, args...).Run(); err != nil {
if err := run(true, cmd, args...); err != nil {
log.Fatalf("FAILURE: couldn't create cluster [%s] -> %+v", c.String("name"), err)
return err
}
@ -53,12 +52,10 @@ func deleteCluster(c *cli.Context) error {
cmd := "docker"
args := []string{"rm", c.String("name")}
log.Printf("Deleting cluster [%s]", c.String("name"))
log.Printf("Running command: %+v", exec.Command(cmd, args...).Args)
if err := exec.Command(cmd, args...).Run(); err != nil {
if err := run(true, cmd, args...); err != nil {
log.Printf("WARNING: couldn't delete cluster [%s], trying a force remove now.", c.String("name"))
args = append(args, "-f")
log.Printf("Running command: %+v", exec.Command(cmd, args...).Args)
if err := exec.Command(cmd, args...).Run(); err != nil {
if err := run(true, cmd, args...); err != nil {
log.Fatalf("FAILURE: couldn't delete cluster [%s] -> %+v", c.String("name"), err)
return err
}
@ -73,8 +70,7 @@ func stopCluster(c *cli.Context) error {
cmd := "docker"
args := []string{"stop", c.String("name")}
log.Printf("Stopping cluster [%s]", c.String("name"))
log.Printf("Running command: %+v", exec.Command(cmd, args...).Args)
if err := exec.Command(cmd, args...).Run(); err != nil {
if err := run(true, cmd, args...); err != nil {
log.Fatalf("FAILURE: couldn't stop cluster [%s] -> %+v", c.String("name"), err)
return err
}
@ -87,8 +83,7 @@ func startCluster(c *cli.Context) error {
cmd := "docker"
args := []string{"start", c.String("name")}
log.Printf("Starting cluster [%s]", c.String("name"))
log.Printf("Running command: %+v", exec.Command(cmd, args...).Args)
if err := exec.Command(cmd, args...).Run(); err != nil {
if err := run(true, cmd, args...); err != nil {
log.Fatalf("FAILURE: couldn't start cluster [%s] -> %+v", c.String("name"), err)
return err
}
@ -109,8 +104,7 @@ func getKubeConfig(c *cli.Context) error {
cmd := "docker"
args := []string{"cp", sourcePath, destPath}
log.Printf("Grabbing kubeconfig for cluster [%s]", c.String("name"))
log.Printf("Running command: %+v", exec.Command(cmd, args...).Args)
if err := exec.Command(cmd, args...).Run(); err != nil {
if err := run(false, cmd, args...); err != nil {
log.Fatalf("FAILURE: couldn't get kubeconfig for cluster [%s] -> %+v", c.String("name"), err)
return err
}
@ -146,7 +140,7 @@ func main() {
log.Print("Checking docker...")
cmd := "docker"
args := []string{"version"}
if err := exec.Command(cmd, args...).Run(); err != nil {
if err := run(true, cmd, args...); err != nil {
log.Fatalf("Checking docker: FAILED")
return err
}
@ -249,3 +243,13 @@ func main() {
log.Fatal(err)
}
}
func run(verbose bool, name string, args ...string) error {
if verbose {
log.Printf("Running command: %+v", append([]string{name}, args...))
}
cmd := exec.Command(name, args...)
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
return cmd.Run()
}

Loading…
Cancel
Save