From eee2ecda0677eee78a3ba2ea55a28168de9c2a2e Mon Sep 17 00:00:00 2001 From: p4u1 Date: Sun, 7 Jul 2024 12:39:02 +0200 Subject: [PATCH] refactor(recipe): add offline and chaos options to Ensure method --- cli/recipe/fetch.go | 4 ++-- pkg/recipe/recipe.go | 20 ++++++++++++++------ 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/cli/recipe/fetch.go b/cli/recipe/fetch.go index 877700c7..62db1256 100644 --- a/cli/recipe/fetch.go +++ b/cli/recipe/fetch.go @@ -27,7 +27,7 @@ var recipeFetchCommand = cli.Command{ r := recipe.Get2(recipeName) if recipeName != "" { internal.ValidateRecipe(c) - if err := r.Ensure(); err != nil { + if err := r.Ensure(false, false); err != nil { log.Fatal(err) } return nil @@ -41,7 +41,7 @@ var recipeFetchCommand = cli.Command{ catlBar := formatter.CreateProgressbar(len(catalogue), "fetching latest recipes...") for recipeName := range catalogue { r := recipe.Get2(recipeName) - if err := r.Ensure(); err != nil { + if err := r.Ensure(false, false); err != nil { log.Error(err) } catlBar.Add(1) diff --git a/pkg/recipe/recipe.go b/pkg/recipe/recipe.go index bc343984..0ac5a85c 100644 --- a/pkg/recipe/recipe.go +++ b/pkg/recipe/recipe.go @@ -275,15 +275,23 @@ type Recipe2 struct { } // Ensure makes sure the recipe exists, is up to date and has the latest version checked out. -func (r Recipe2) Ensure() error { +func (r Recipe2) Ensure(chaos bool, offline bool) error { if err := r.EnsureExists(); err != nil { return err } - if err := r.EnsureUpToDate(); err != nil { - return err - } - if err := r.EnsureLatest(); err != nil { - return err + + if !chaos { + if err := r.EnsureIsClean(); err != nil { + return err + } + if !offline { + if err := r.EnsureUpToDate(); err != nil { + log.Fatal(err) + } + } + if err := r.EnsureLatest(); err != nil { + return err + } } return nil }