diff --git a/cli/internal/validate.go b/cli/internal/validate.go index 933e7add..2ea6cd47 100644 --- a/cli/internal/validate.go +++ b/cli/internal/validate.go @@ -17,34 +17,34 @@ func ValidateRecipe(args []string, cmdName string) recipe.Recipe { recipeName = args[0] } - if recipeName == "" && !NoInput { - var recipes []string + var recipes []string - catl, err := recipe.ReadRecipeCatalogue(Offline) - if err != nil { - log.Fatal(err) - } + catl, err := recipe.ReadRecipeCatalogue(Offline) + if err != nil { + log.Fatal(err) + } - knownRecipes := make(map[string]bool) - for name := range catl { - knownRecipes[name] = true - } + knownRecipes := make(map[string]bool) + for name := range catl { + knownRecipes[name] = true + } - localRecipes, err := recipe.GetRecipesLocal() - if err != nil { - log.Debugf("can't read local recipes: %s", err) - } else { - for _, recipeLocal := range localRecipes { - if _, ok := knownRecipes[recipeLocal]; !ok { - knownRecipes[recipeLocal] = true - } + localRecipes, err := recipe.GetRecipesLocal() + if err != nil { + log.Debugf("can't read local recipes: %s", err) + } else { + for _, recipeLocal := range localRecipes { + if _, ok := knownRecipes[recipeLocal]; !ok { + knownRecipes[recipeLocal] = true } } + } - for recipeName := range knownRecipes { - recipes = append(recipes, recipeName) - } + for recipeName := range knownRecipes { + recipes = append(recipes, recipeName) + } + if recipeName == "" && !NoInput { prompt := &survey.Select{ Message: "Select recipe", Options: recipes, @@ -58,11 +58,15 @@ func ValidateRecipe(args []string, cmdName string) recipe.Recipe { log.Fatal("no recipe name provided") } + if _, ok := knownRecipes[recipeName]; !ok { + log.Fatalf("no recipe '%s' exists?", recipeName) + } + chosenRecipe := recipe.Get(recipeName) - err := chosenRecipe.EnsureExists() - if err != nil { + if err := chosenRecipe.EnsureExists(); err != nil { log.Fatal(err) } + _, err = chosenRecipe.GetComposeConfig(nil) if err != nil { if cmdName == "generate" { diff --git a/cli/recipe/fetch.go b/cli/recipe/fetch.go index 2a31e8b2..a5c1a368 100644 --- a/cli/recipe/fetch.go +++ b/cli/recipe/fetch.go @@ -47,7 +47,6 @@ var RecipeFetchCommand = &cobra.Command{ log.Fatal("cannot use [recipe] and --all/-a together") } - ensureCtx := internal.GetEnsureContext() if recipeName != "" { r := recipe.Get(recipeName) if _, err := os.Stat(r.Dir); !os.IsNotExist(err) { @@ -91,6 +90,7 @@ var RecipeFetchCommand = &cobra.Command{ } catlBar := formatter.CreateProgressbar(len(catalogue), "fetching latest recipes...") + ensureCtx := internal.GetEnsureContext() for recipeName := range catalogue { r := recipe.Get(recipeName) if err := r.Ensure(ensureCtx); err != nil { diff --git a/pkg/recipe/git.go b/pkg/recipe/git.go index 9a5dd95b..e430d71a 100644 --- a/pkg/recipe/git.go +++ b/pkg/recipe/git.go @@ -40,14 +40,14 @@ func (r Recipe) Ensure(ctx EnsureContext) error { if !ctx.Offline { if err := r.EnsureUpToDate(); err != nil { - log.Fatal(err) + return err } } if r.EnvVersion != "" && !ctx.IgnoreEnvVersion { log.Debugf("ensuring env version %s", r.EnvVersion) if strings.Contains(r.EnvVersion, "+U") { - log.Fatalf("can not redeploy chaos version (%s) without --chaos", r.EnvVersion) + return fmt.Errorf("can not redeploy chaos version (%s) without --chaos", r.EnvVersion) } if _, err := r.EnsureVersion(r.EnvVersion); err != nil { diff --git a/tests/integration/helpers/app.bash b/tests/integration/helpers/app.bash index c9da3294..62b7ae22 100644 --- a/tests/integration/helpers/app.bash +++ b/tests/integration/helpers/app.bash @@ -1,6 +1,8 @@ #!/usr/bin/env bash _new_app() { + _fetch_recipe + run $ABRA app new "$TEST_RECIPE" \ --no-input \ --server "$TEST_SERVER" \