refactor: centralise git commit machinery

This commit is contained in:
2021-12-19 23:50:15 +01:00
parent 66666e30b7
commit 5113db1612
3 changed files with 77 additions and 49 deletions

View File

@ -15,7 +15,6 @@ import (
gitPkg "coopcloud.tech/abra/pkg/git"
"coopcloud.tech/abra/pkg/limit"
"github.com/AlecAivazis/survey/v2"
"github.com/go-git/go-git/v5"
"github.com/sirupsen/logrus"
"github.com/urfave/cli/v2"
)
@ -224,43 +223,19 @@ A new catalogue copy can be published to the recipes repository by passing the
logrus.Infof("generated new recipe catalogue in %s", config.APPS_JSON)
if internal.Commit {
repoPath := path.Join(config.ABRA_DIR, "catalogue")
commitRepo, err := git.PlainOpen(repoPath)
if err != nil {
logrus.Fatal(err)
}
commitWorktree, err := commitRepo.Worktree()
if err != nil {
logrus.Fatal(err)
}
if internal.CommitMessage == "" {
if internal.CommitMessage == "" && !internal.NoInput {
prompt := &survey.Input{
Message: "commit message",
Default: "chore: publish new catalogue changes",
Default: fmt.Sprintf("chore: publish catalogue changes"),
}
if err := survey.AskOne(prompt, &internal.CommitMessage); err != nil {
logrus.Fatal(err)
}
}
err = commitWorktree.AddGlob("**.json")
if err != nil {
if err := gitPkg.Commit("**.json", internal.CommitMessage, false); err != nil {
logrus.Fatal(err)
}
logrus.Debug("staged **.json for commit")
_, err = commitWorktree.Commit(internal.CommitMessage, &git.CommitOptions{})
if err != nil {
logrus.Fatal(err)
}
logrus.Info("changes commited")
if err := commitRepo.Push(&git.PushOptions{}); err != nil {
logrus.Fatal(err)
}
logrus.Info("changes pushed")
}
return nil

View File

@ -9,6 +9,7 @@ import (
abraFormatter "coopcloud.tech/abra/cli/formatter"
"coopcloud.tech/abra/cli/internal"
"coopcloud.tech/abra/pkg/config"
gitPkg "coopcloud.tech/abra/pkg/git"
"coopcloud.tech/abra/pkg/recipe"
recipePkg "coopcloud.tech/abra/pkg/recipe"
"coopcloud.tech/tagcmp"
@ -140,15 +141,6 @@ You may invoke this command in "wizard" mode and be prompted for input:
}
if internal.Commit || internal.CommitMessage != "" {
commitRepo, err := git.PlainOpen(directory)
if err != nil {
logrus.Fatal(err)
}
commitWorktree, err := commitRepo.Worktree()
if err != nil {
logrus.Fatal(err)
}
if internal.CommitMessage == "" && !internal.NoInput {
prompt := &survey.Input{
Message: "commit message",
@ -159,21 +151,14 @@ You may invoke this command in "wizard" mode and be prompted for input:
}
}
err = commitWorktree.AddGlob("compose.**yml")
if err != nil {
if internal.CommitMessage == "" {
logrus.Fatal("no commit message specified?")
}
if err := gitPkg.Commit("compose.**yml", internal.CommitMessage, internal.Dry); err != nil {
logrus.Fatal(err)
}
logrus.Debug("staged compose.**yml for commit")
if !internal.Dry {
_, err = commitWorktree.Commit(internal.CommitMessage, &git.CommitOptions{})
if err != nil {
logrus.Fatal(err)
}
logrus.Info("changes commited")
} else {
logrus.Info("dry run only: NOT committing changes")
}
}
repo, err := git.PlainOpen(directory)