package internal import ( "fmt" "strings" "coopcloud.tech/abra/pkg/recipe" "github.com/AlecAivazis/survey/v2" "github.com/sirupsen/logrus" ) // PromptBumpType prompts for version bump type func PromptBumpType(tagString string) error { if (!Major && !Minor && !Patch) && tagString == "" { fmt.Printf(`semver cheat sheet (more via semver.org): major: new features/bug fixes, backwards incompatible minor: new features/bug fixes, backwards compatible patch: bug fixes, backwards compatible `) var chosenBumpType string prompt := &survey.Select{ Message: fmt.Sprintf("select recipe version increment type"), Options: []string{"major", "minor", "patch"}, } if err := survey.AskOne(prompt, &chosenBumpType); err != nil { return err } SetBumpType(chosenBumpType) } return nil } // GetBumpType figures out which bump type is specified func GetBumpType() string { var bumpType string if Major { bumpType = "major" } else if Minor { bumpType = "minor" } else if Patch { bumpType = "patch" } else { logrus.Fatal("no version bump type specififed?") } return bumpType } // SetBumpType figures out which bump type is specified func SetBumpType(bumpType string) { if bumpType == "major" { Major = true } else if bumpType == "minor" { Minor = true } else if bumpType == "patch" { Patch = true } else { logrus.Fatal("no version bump type specififed?") } } // GetMainApp retrieves the main 'app' image name func GetMainApp(recipe recipe.Recipe) string { var app string for _, service := range recipe.Config.Services { name := service.Name if name == "app" { app = strings.Split(service.Image, ":")[0] } } if app == "" { logrus.Fatalf("%s has no main 'app' service?", recipe.Name) } return app }