diff --git a/cmd/create.go b/cmd/create.go index 998b108..56556ac 100644 --- a/cmd/create.go +++ b/cmd/create.go @@ -70,17 +70,30 @@ func createCluster() { cmd_tpl := "%v create cluster --config %v%v" cmd := fmt.Sprintf(cmd_tpl, internal.Kind, internal.KindConfigFile, optName) - ExecCmd(cmd, false) + _, _, err = ExecCmd(cmd, false) + if err != nil { + slog.Error("kind create cluster failed", "error", err) + os.Exit(1) + } if c.Calico { slog.Info("Install Calico CNI") cmd = `kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.24.5/manifests/tigera-operator.yaml && kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.24.5/manifests/custom-resources.yaml` - ExecCmd(cmd, false) + _, _, err = ExecCmd(cmd, false) + if err != nil { + slog.Error("calico installation failed", "error", err) + os.Exit(1) + } } slog.Info("Wait for Kubernetes nodes to be up and running") cmd = "kubectl wait --timeout=180s --for=condition=Ready node --all" ExecCmd(cmd, false) + _, _, err = ExecCmd(cmd, false) + if err != nil { + slog.Error("kubectl wait failed", "error", err) + os.Exit(1) + } } diff --git a/cmd/delete.go b/cmd/delete.go index b4c7f62..045aaca 100644 --- a/cmd/delete.go +++ b/cmd/delete.go @@ -6,6 +6,7 @@ package cmd import ( "fmt" "log/slog" + "os" "github.com/k8s-school/ktbx/internal" "github.com/spf13/cobra" @@ -22,8 +23,11 @@ func deleteCluster() { cmd := fmt.Sprintf(cmd_tpl, internal.Kind, optName) - ExecCmd(cmd, false) - + _, _, err := ExecCmd(cmd, false) + if err != nil { + slog.Error("Error while deleting cluster", "error", err) + os.Exit(1) + } } // deleteCmd represents the delete command diff --git a/cmd/desk.go b/cmd/desk.go index b20ba80..f623d8f 100644 --- a/cmd/desk.go +++ b/cmd/desk.go @@ -5,6 +5,8 @@ package cmd import ( "fmt" + "log/slog" + "os" "github.com/k8s-school/ktbx/resources" "github.com/spf13/cobra" @@ -23,10 +25,18 @@ var deskCmd = &cobra.Command{ if showDockerCmd { // TODO escape ' in command script := "SHOWDOCKERCMD=true\n" + resources.DeskRunScript - ExecCmd(script, false) + _, _, err := ExecCmd(script, false) + if err != nil { + slog.Error("Error while executing desk script", "error", err) + os.Exit(1) + } } else { fmt.Println("Launch interactive desk") - ExecCmd(resources.DeskRunScript, true) + _, _, err := ExecCmd(resources.DeskRunScript, true) + if err != nil { + slog.Error("Error while launching interactive desk", "error", err) + os.Exit(1) + } } }, diff --git a/cmd/install_argocd.go b/cmd/install_argocd.go index 2daddd8..89d6400 100644 --- a/cmd/install_argocd.go +++ b/cmd/install_argocd.go @@ -5,6 +5,7 @@ package cmd import ( "log/slog" + "os" "github.com/k8s-school/ktbx/resources" "github.com/spf13/cobra" @@ -18,7 +19,11 @@ var argocdCmd = &cobra.Command{ Run: func(cmd *cobra.Command, args []string) { slog.Info("Install ArgoCD") - ExecCmd(resources.ArgoCDInstallScript, false) + _, _, err := ExecCmd(resources.ArgoCDInstallScript, false) + if err != nil { + slog.Error("Error while installing ArgoCD", "error", err) + os.Exit(1) + } }, } diff --git a/cmd/install_argoworkflows.go b/cmd/install_argoworkflows.go index 8681b8a..16b1502 100644 --- a/cmd/install_argoworkflows.go +++ b/cmd/install_argoworkflows.go @@ -5,6 +5,7 @@ package cmd import ( "log/slog" + "os" "github.com/k8s-school/ktbx/resources" "github.com/spf13/cobra" @@ -18,7 +19,11 @@ var argoWorkflowsCmd = &cobra.Command{ Run: func(cmd *cobra.Command, args []string) { slog.Info("Install Argo-workflows") - ExecCmd(resources.ArgoWorkflowInstallScript, false) + _, _, err := ExecCmd(resources.ArgoWorkflowInstallScript, false) + if err != nil { + slog.Error("Error while installing Argo-workflows", "error", err) + os.Exit(1) + } }, } diff --git a/cmd/install_helm.go b/cmd/install_helm.go index f7acf6f..c2fcf16 100644 --- a/cmd/install_helm.go +++ b/cmd/install_helm.go @@ -5,6 +5,8 @@ package cmd import ( "fmt" + "log/slog" + "os" "github.com/k8s-school/ktbx/resources" "github.com/spf13/cobra" @@ -18,7 +20,11 @@ var helmCmd = &cobra.Command{ Run: func(cmd *cobra.Command, args []string) { fmt.Println("Install helm") - ExecCmd(resources.HelmInstallScript, false) + _, _, err := ExecCmd(resources.HelmInstallScript, false) + if err != nil { + slog.Error("Error while installing helm", "error", err) + os.Exit(1) + } }, } diff --git a/cmd/install_kind.go b/cmd/install_kind.go index 8eed8e0..a268a12 100644 --- a/cmd/install_kind.go +++ b/cmd/install_kind.go @@ -5,6 +5,8 @@ package cmd import ( "fmt" + "log/slog" + "os" "github.com/k8s-school/ktbx/internal" "github.com/k8s-school/ktbx/resources" @@ -31,7 +33,11 @@ var kindCmd = &cobra.Command{ script := internal.FormatTemplate(resources.KindInstallScript, k) - ExecCmd(script, false) + _, _, err := ExecCmd(script, false) + if err != nil { + slog.Error("Error while installing kind", "error", err) + os.Exit(1) + } }, } diff --git a/cmd/install_kubectl.go b/cmd/install_kubectl.go index 7dde69b..70edff0 100644 --- a/cmd/install_kubectl.go +++ b/cmd/install_kubectl.go @@ -5,6 +5,8 @@ package cmd import ( "fmt" + "log/slog" + "os" "github.com/k8s-school/ktbx/resources" "github.com/spf13/cobra" @@ -18,7 +20,11 @@ var kubectlCmd = &cobra.Command{ Run: func(cmd *cobra.Command, args []string) { fmt.Println("Install kubectl") - ExecCmd(resources.KubectlInstallScript, false) + _, _, err := ExecCmd(resources.KubectlInstallScript, false) + if err != nil { + slog.Error("Error while installing kubectl", "error", err) + os.Exit(1) + } }, } diff --git a/cmd/install_olm.go b/cmd/install_olm.go index 37a6873..b83b462 100644 --- a/cmd/install_olm.go +++ b/cmd/install_olm.go @@ -5,6 +5,7 @@ package cmd import ( "log/slog" + "os" "github.com/k8s-school/ktbx/resources" "github.com/spf13/cobra" @@ -18,7 +19,11 @@ var olmCmd = &cobra.Command{ Run: func(cmd *cobra.Command, args []string) { slog.Info("Install OLM") - ExecCmd(resources.OlmInstallScript, false) + _, _, err := ExecCmd(resources.OlmInstallScript, false) + if err != nil { + slog.Error("Error while installing OLM", "error", err) + os.Exit(1) + } }, } diff --git a/cmd/install_telepresence.go b/cmd/install_telepresence.go index c5929be..66fc6f2 100644 --- a/cmd/install_telepresence.go +++ b/cmd/install_telepresence.go @@ -5,6 +5,8 @@ package cmd import ( "fmt" + "log/slog" + "os" "github.com/k8s-school/ktbx/resources" "github.com/spf13/cobra" @@ -17,7 +19,11 @@ var telepresenceCmd = &cobra.Command{ Run: func(cmd *cobra.Command, args []string) { fmt.Println("Install telepresence") - ExecCmd(resources.TelepresenceInstallScript, false) + _, _, err := ExecCmd(resources.TelepresenceInstallScript, false) + if err != nil { + slog.Error("Error while installing telepresence", "error", err) + os.Exit(1) + } }, } diff --git a/cmd/shell.go b/cmd/shell.go index 260d065..335e8c1 100644 --- a/cmd/shell.go +++ b/cmd/shell.go @@ -10,7 +10,7 @@ import ( const ShellToUse = "bash" -func ExecCmd(command string, interactive bool) (string, string) { +func ExecCmd(command string, interactive bool) (string, string, error) { var stdoutBuf, stderrBuf bytes.Buffer if !dryRun { @@ -27,6 +27,7 @@ func ExecCmd(command string, interactive bool) (string, string) { err := cmd.Run() if err != nil { slog.Error("cmd.Run() failed", "error", err) + return stdoutBuf.String(), stderrBuf.String(), err } // logger.Infof("stdout %v", stdoutBuf) // logger.Infof("stderr %v", stderrBuf) @@ -34,5 +35,5 @@ func ExecCmd(command string, interactive bool) (string, string) { } else { slog.Info("Dry run", "command", command) } - return stdoutBuf.String(), stderrBuf.String() + return stdoutBuf.String(), stderrBuf.String(), nil }