1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-07-30 03:23:08 +03:00

Allow force-tagging if tag exists

This commit is contained in:
Stefan Haller
2023-07-24 12:29:42 +02:00
parent 71d2fd37e2
commit d41a195ee6
6 changed files with 137 additions and 6 deletions

View File

@ -4,6 +4,7 @@ import (
"github.com/jesseduffield/gocui"
"github.com/jesseduffield/lazygit/pkg/gui/context"
"github.com/jesseduffield/lazygit/pkg/gui/types"
"github.com/jesseduffield/lazygit/pkg/utils"
)
type TagsHelper struct {
@ -19,16 +20,16 @@ func NewTagsHelper(c *HelperCommon, commitsHelper *CommitsHelper) *TagsHelper {
}
func (self *TagsHelper) OpenCreateTagPrompt(ref string, onCreate func()) error {
onConfirm := func(tagName string, description string) error {
doCreateTag := func(tagName string, description string, force bool) error {
return self.c.WithWaitingStatus(self.c.Tr.CreatingTag, func(gocui.Task) error {
if description != "" {
self.c.LogAction(self.c.Tr.Actions.CreateAnnotatedTag)
if err := self.c.Git().Tag.CreateAnnotated(tagName, ref, description); err != nil {
if err := self.c.Git().Tag.CreateAnnotated(tagName, ref, description, force); err != nil {
return self.c.Error(err)
}
} else {
self.c.LogAction(self.c.Tr.Actions.CreateLightweightTag)
if err := self.c.Git().Tag.CreateLightweight(tagName, ref); err != nil {
if err := self.c.Git().Tag.CreateLightweight(tagName, ref, force); err != nil {
return self.c.Error(err)
}
}
@ -41,6 +42,28 @@ func (self *TagsHelper) OpenCreateTagPrompt(ref string, onCreate func()) error {
})
}
onConfirm := func(tagName string, description string) error {
if self.c.Git().Tag.HasTag(tagName) {
prompt := utils.ResolvePlaceholderString(
self.c.Tr.ForceTagPrompt,
map[string]string{
"tagName": tagName,
"cancelKey": self.c.UserConfig.Keybinding.Universal.Return,
"confirmKey": self.c.UserConfig.Keybinding.Universal.Confirm,
},
)
return self.c.Confirm(types.ConfirmOpts{
Title: self.c.Tr.ForceTag,
Prompt: prompt,
HandleConfirm: func() error {
return doCreateTag(tagName, description, true)
},
})
} else {
return doCreateTag(tagName, description, false)
}
}
return self.commitsHelper.OpenCommitMessagePanel(
&OpenCommitMessagePanelOpts{
CommitIndex: context.NoCommitIndex,