diff --git a/cli/internal/deploy.go b/cli/internal/deploy.go index 6cbe7edd..bc69c35d 100644 --- a/cli/internal/deploy.go +++ b/cli/internal/deploy.go @@ -10,7 +10,6 @@ import ( "coopcloud.tech/abra/pkg/config" "coopcloud.tech/abra/pkg/formatter" "coopcloud.tech/abra/pkg/log" - "coopcloud.tech/abra/pkg/recipe" "coopcloud.tech/tagcmp" "github.com/AlecAivazis/survey/v2" "github.com/charmbracelet/lipgloss" @@ -64,11 +63,7 @@ func NewVersionOverview( upperKind := strings.ToUpper(kind) - envVersion, err := recipe.GetEnvVersionRaw(app.Recipe.Name) - if err != nil { - return err - } - + envVersion := app.Recipe.EnvVersion if envVersion == "" { envVersion = config.NO_VERSION_DEFAULT } @@ -162,16 +157,7 @@ func DeployOverview( toDeployChaosVersion = formatter.AddDirtyMarker(toDeployChaosVersion) } - recipeName, exists := app.Env["RECIPE"] - if !exists { - recipeName = app.Env["TYPE"] - } - - envVersion, err := recipe.GetEnvVersionRaw(recipeName) - if err != nil { - return err - } - + envVersion := app.Recipe.EnvVersionRaw if envVersion == "" { envVersion = config.NO_VERSION_DEFAULT } @@ -242,16 +228,7 @@ func UndeployOverview( domain = config.NO_DOMAIN_DEFAULT } - recipeName, exists := app.Env["RECIPE"] - if !exists { - recipeName = app.Env["TYPE"] - } - - envVersion, err := recipe.GetEnvVersionRaw(recipeName) - if err != nil { - return err - } - + envVersion := app.Recipe.EnvVersionRaw if envVersion == "" { envVersion = config.NO_VERSION_DEFAULT } diff --git a/pkg/recipe/recipe.go b/pkg/recipe/recipe.go index 97d92ae0..1919bd3c 100644 --- a/pkg/recipe/recipe.go +++ b/pkg/recipe/recipe.go @@ -119,22 +119,10 @@ type Features struct { SSO string `json:"sso"` } -func GetEnvVersionRaw(name string) (string, error) { - var version string - - if strings.Contains(name, ":") { - split := strings.Split(name, ":") - if len(split) > 2 { - return version, fmt.Errorf("version seems invalid: %s", name) - } - version = split[1] - } - - return version, nil -} - func Get(name string) Recipe { version := "" + versionRaw := "" + dirty := false if strings.Contains(name, ":") { split := strings.Split(name, ":") if len(split) > 2 { @@ -143,8 +131,10 @@ func Get(name string) Recipe { name = split[0] version = split[1] + versionRaw = version if strings.HasSuffix(version, config.DIRTY_DEFAULT) { version = strings.Replace(split[1], config.DIRTY_DEFAULT, "", 1) + dirty = true log.Debugf("removed dirty suffix from .env version: %s -> %s", split[1], version) } } @@ -167,11 +157,13 @@ func Get(name string) Recipe { dir := path.Join(config.RECIPES_DIR, escapeRecipeName(name)) r := Recipe{ - Name: name, - EnvVersion: version, - Dir: dir, - GitURL: gitURL, - SSHURL: sshURL, + Name: name, + EnvVersion: version, + EnvVersionRaw: versionRaw, + Dirty: dirty, + Dir: dir, + GitURL: gitURL, + SSHURL: sshURL, ComposePath: path.Join(dir, "compose.yml"), ReadmePath: path.Join(dir, "README.md"), @@ -187,12 +179,13 @@ func Get(name string) Recipe { } type Recipe struct { - Name string - EnvVersion string - Dirty bool // NOTE(d1): git terminology for unstaged changes - Dir string - GitURL string - SSHURL string + Name string + EnvVersion string + EnvVersionRaw string + Dirty bool // NOTE(d1): git terminology for unstaged changes + Dir string + GitURL string + SSHURL string ComposePath string ReadmePath string diff --git a/pkg/recipe/recipe_test.go b/pkg/recipe/recipe_test.go index 8afd9df6..00184e79 100644 --- a/pkg/recipe/recipe_test.go +++ b/pkg/recipe/recipe_test.go @@ -34,6 +34,7 @@ func TestGet(t *testing.T) { recipe: Recipe{ Name: "foo", EnvVersion: "1.2.3", + EnvVersionRaw: "1.2.3", Dir: path.Join(cfg.GetAbraDir(), "/recipes/foo"), GitURL: "https://git.coopcloud.tech/coop-cloud/foo.git", SSHURL: "ssh://git@git.coopcloud.tech:2222/coop-cloud/foo.git", @@ -61,6 +62,23 @@ func TestGet(t *testing.T) { recipe: Recipe{ Name: "mygit.org/myorg/cool-recipe", EnvVersion: "1.2.4", + EnvVersionRaw: "1.2.4", + Dir: path.Join(cfg.GetAbraDir(), "/recipes/mygit_org_myorg_cool-recipe"), + GitURL: "https://mygit.org/myorg/cool-recipe.git", + SSHURL: "ssh://git@mygit.org/myorg/cool-recipe.git", + ComposePath: path.Join(cfg.GetAbraDir(), "recipes/mygit_org_myorg_cool-recipe/compose.yml"), + ReadmePath: path.Join(cfg.GetAbraDir(), "recipes/mygit_org_myorg_cool-recipe/README.md"), + SampleEnvPath: path.Join(cfg.GetAbraDir(), "recipes/mygit_org_myorg_cool-recipe/.env.sample"), + AbraShPath: path.Join(cfg.GetAbraDir(), "recipes/mygit_org_myorg_cool-recipe/abra.sh"), + }, + }, + { + name: "mygit.org/myorg/cool-recipe:1e83340e+U", + recipe: Recipe{ + Name: "mygit.org/myorg/cool-recipe", + EnvVersion: "1e83340e", + EnvVersionRaw: "1e83340e+U", + Dirty: true, Dir: path.Join(cfg.GetAbraDir(), "/recipes/mygit_org_myorg_cool-recipe"), GitURL: "https://mygit.org/myorg/cool-recipe.git", SSHURL: "ssh://git@mygit.org/myorg/cool-recipe.git", @@ -105,16 +123,3 @@ func TestGetVersionLabelLocalDoesNotUseTimeoutLabel(t *testing.T) { assert.NotEqual(t, label, defaultTimeoutLabel) } } - -func TestDirtyMarkerRemoved(t *testing.T) { - r := Get("abra-test-recipe:1e83340e+U") - assert.Equal(t, "1e83340e", r.EnvVersion) -} - -func TestGetEnvVersionRaw(t *testing.T) { - v, err := GetEnvVersionRaw("abra-test-recipe:1e83340e+U") - if err != nil { - t.Fatal(err) - } - assert.Equal(t, "1e83340e+U", v) -}