feat: add a flag to commit your changes before creating a tag

This commit is contained in:
knoflook 2021-09-29 16:06:43 +02:00
parent 2076c566bb
commit c4c76f4848
Signed by untrusted user: knoflook
GPG Key ID: D6A1D0E8FC4FEF1C

View File

@ -10,6 +10,7 @@ import (
"coopcloud.tech/abra/pkg/config" "coopcloud.tech/abra/pkg/config"
"coopcloud.tech/abra/pkg/recipe" "coopcloud.tech/abra/pkg/recipe"
"coopcloud.tech/tagcmp" "coopcloud.tech/tagcmp"
"github.com/AlecAivazis/survey/v2"
"github.com/go-git/go-git/v5" "github.com/go-git/go-git/v5"
"github.com/go-git/go-git/v5/plumbing" "github.com/go-git/go-git/v5/plumbing"
"github.com/go-git/go-git/v5/plumbing/object" "github.com/go-git/go-git/v5/plumbing/object"
@ -56,6 +57,22 @@ var PatchFlag = &cli.BoolFlag{
Destination: &Patch, Destination: &Patch,
} }
var CommitMessage string
var CommitMessageFlag = &cli.StringFlag{
Name: "commit-message",
Usage: "commit message",
Aliases: []string{"cm"},
Destination: &CommitMessage,
}
var Commit bool
var CommitFlag = &cli.BoolFlag{
Name: "commit",
Value: false,
Aliases: []string{"c"},
Destination: &Commit,
}
var recipeReleaseCommand = &cli.Command{ var recipeReleaseCommand = &cli.Command{
Name: "release", Name: "release",
Usage: "tag a recipe", Usage: "tag a recipe",
@ -67,6 +84,8 @@ var recipeReleaseCommand = &cli.Command{
MinorFlag, MinorFlag,
MajorFlag, MajorFlag,
PushFlag, PushFlag,
CommitFlag,
CommitMessageFlag,
}, },
Action: func(c *cli.Context) error { Action: func(c *cli.Context) error {
recipe := internal.ValidateRecipe(c) recipe := internal.ValidateRecipe(c)
@ -79,6 +98,29 @@ var recipeReleaseCommand = &cli.Command{
logrus.Fatal("Main app's version is empty.") logrus.Fatal("Main app's version is empty.")
} }
if Commit || (CommitMessage != "") {
commitRepo, err := git.PlainOpen(directory)
if err != nil {
logrus.Fatal(err)
}
commitWorktree, err := commitRepo.Worktree()
if err != nil {
logrus.Fatal(err)
}
if CommitMessage == "" {
prompt := &survey.Input{
Message: "commit message",
}
survey.AskOne(prompt, &CommitMessage)
}
_, err = commitWorktree.Commit(CommitMessage, &git.CommitOptions{})
if err != nil {
logrus.Fatal(err)
}
logrus.Info("changes commited")
}
repo, err := git.PlainOpen(directory) repo, err := git.PlainOpen(directory)
if err != nil { if err != nil {
logrus.Fatal(err) logrus.Fatal(err)