diff --git a/cmd/debug.go b/cmd/debug.go index df3e960f..9fe8e630 100644 --- a/cmd/debug.go +++ b/cmd/debug.go @@ -147,7 +147,7 @@ var specCmd = &cobra.Command{ buildModel, err := prog.Run() tui.CheckErr(err) if buildModel.(build.Model).Err != nil { - tui.CheckErr(fmt.Errorf("error building services")) + tui.CheckErr(fmt.Errorf("error building migration images")) } } } diff --git a/cmd/run.go b/cmd/run.go index c624ede7..8266c62c 100644 --- a/cmd/run.go +++ b/cmd/run.go @@ -138,6 +138,11 @@ var runCmd = &cobra.Command{ // non-interactive environment for update := range allBuildUpdates { + if update.Status == project.ServiceBuildStatus_Error { + localCloud.Stop() + tui.CheckErr(fmt.Errorf("error building services")) + } + for _, line := range strings.Split(strings.TrimSuffix(update.Message, "\n"), "\n") { fmt.Printf("%s [%s]: %s\n", update.ServiceName, update.Status, line) } @@ -145,8 +150,12 @@ var runCmd = &cobra.Command{ } else { prog := teax.NewProgram(build.NewModel(allBuildUpdates, "Building Services")) // blocks but quits once the above updates channel is closed by the build process - _, err = prog.Run() + buildModel, err := prog.Run() tui.CheckErr(err) + if buildModel.(build.Model).Err != nil { + localCloud.Stop() + tui.CheckErr(fmt.Errorf("error building services")) + } } websiteBuildUpdates, err := proj.BuildWebsites(loadEnv) @@ -156,6 +165,11 @@ var runCmd = &cobra.Command{ if isNonInteractive() { fmt.Println("building project websites") for update := range websiteBuildUpdates { + if update.Status == project.ServiceBuildStatus_Error { + localCloud.Stop() + tui.CheckErr(fmt.Errorf("error building websites")) + } + for _, line := range strings.Split(strings.TrimSuffix(update.Message, "\n"), "\n") { fmt.Printf("%s [%s]: %s\n", update.ServiceName, update.Status, line) } @@ -163,8 +177,13 @@ var runCmd = &cobra.Command{ } else { prog := teax.NewProgram(build.NewModel(websiteBuildUpdates, "Building Websites")) // blocks but quits once the above updates channel is closed by the build process - _, err = prog.Run() + buildModel, err := prog.Run() tui.CheckErr(err) + + if buildModel.(build.Model).Err != nil { + localCloud.Stop() + tui.CheckErr(fmt.Errorf("error building websites")) + } } } diff --git a/cmd/stack.go b/cmd/stack.go index 2bc79f51..990a06bd 100644 --- a/cmd/stack.go +++ b/cmd/stack.go @@ -198,6 +198,10 @@ var stackUpdateCmd = &cobra.Command{ // non-interactive environment for update := range allBuildUpdates { + if update.Status == project.ServiceBuildStatus_Error { + tui.CheckErr(fmt.Errorf("error building services")) + } + for _, line := range strings.Split(strings.TrimSuffix(update.Message, "\n"), "\n") { fmt.Printf("%s [%s]: %s\n", update.ServiceName, update.Status, line) } @@ -272,7 +276,7 @@ var stackUpdateCmd = &cobra.Command{ buildModel, err := prog.Run() tui.CheckErr(err) if buildModel.(build.Model).Err != nil { - tui.CheckErr(fmt.Errorf("error building services")) + tui.CheckErr(fmt.Errorf("error building migration images")) } } } @@ -284,6 +288,10 @@ var stackUpdateCmd = &cobra.Command{ if isNonInteractive() { fmt.Println("building project websites") for update := range websiteBuildUpdates { + if update.Status == project.ServiceBuildStatus_Error { + tui.CheckErr(fmt.Errorf("error building websites")) + } + for _, line := range strings.Split(strings.TrimSuffix(update.Message, "\n"), "\n") { fmt.Printf("%s [%s]: %s\n", update.ServiceName, update.Status, line) } @@ -291,8 +299,12 @@ var stackUpdateCmd = &cobra.Command{ } else { prog := teax.NewProgram(build.NewModel(websiteBuildUpdates, "Building Websites")) // blocks but quits once the above updates channel is closed by the build process - _, err = prog.Run() + buildModel, err := prog.Run() tui.CheckErr(err) + + if buildModel.(build.Model).Err != nil { + tui.CheckErr(fmt.Errorf("error building websites")) + } } }