From f779a5878d3de20bb01418ad31617a580232d0b2 Mon Sep 17 00:00:00 2001 From: Chris McDonnell Date: Sat, 15 Mar 2025 23:12:39 -0400 Subject: [PATCH] refactor: Express WithGpgHelper with a config key parameter --- pkg/commands/git_commands/config.go | 17 ++++++++++++++--- pkg/gui/controllers/helpers/amend_helper.go | 4 +++- pkg/gui/controllers/helpers/gpg_helper.go | 5 +++-- .../controllers/helpers/working_tree_helper.go | 10 ++++++---- pkg/gui/controllers/local_commits_controller.go | 2 ++ 5 files changed, 28 insertions(+), 10 deletions(-) diff --git a/pkg/commands/git_commands/config.go b/pkg/commands/git_commands/config.go index b93cbf91a..146d54eee 100644 --- a/pkg/commands/git_commands/config.go +++ b/pkg/commands/git_commands/config.go @@ -57,16 +57,27 @@ func (self *ConfigCommands) GetPager(width int) string { return utils.ResolvePlaceholderString(pagerTemplate, templateValues) } -// NeedsGpgSubprocessForCommit tells us whether the user has gpg enabled for commit actions +type GpgConfigKey string + +const ( + CommitGpgSign GpgConfigKey = "commit.gpgSign" + TagGpgSign GpgConfigKey = "tag.gpgSign" +) + +// NeedsGpgSubprocess tells us whether the user has gpg enabled for the specified action type // and needs a subprocess because they have a process where they manually // enter their password every time a GPG action is taken -func (self *ConfigCommands) NeedsGpgSubprocessForCommit() bool { +func (self *ConfigCommands) NeedsGpgSubprocess(key GpgConfigKey) bool { overrideGpg := self.UserConfig().Git.OverrideGpg if overrideGpg { return false } - return self.gitConfig.GetBool("commit.gpgSign") + return self.gitConfig.GetBool(string(key)) +} + +func (self *ConfigCommands) NeedsGpgSubprocessForCommit() bool { + return self.NeedsGpgSubprocess(CommitGpgSign) } func (self *ConfigCommands) GetCoreEditor() string { diff --git a/pkg/gui/controllers/helpers/amend_helper.go b/pkg/gui/controllers/helpers/amend_helper.go index c3e8a8118..8a0a9817e 100644 --- a/pkg/gui/controllers/helpers/amend_helper.go +++ b/pkg/gui/controllers/helpers/amend_helper.go @@ -1,5 +1,7 @@ package helpers +import "github.com/jesseduffield/lazygit/pkg/commands/git_commands" + type AmendHelper struct { c *HelperCommon gpg *GpgHelper @@ -18,5 +20,5 @@ func NewAmendHelper( func (self *AmendHelper) AmendHead() error { cmdObj := self.c.Git().Commit.AmendHeadCmdObj() self.c.LogAction(self.c.Tr.Actions.AmendCommit) - return self.gpg.WithGpgHandling(cmdObj, self.c.Tr.AmendingStatus, nil) + return self.gpg.WithGpgHandling(cmdObj, git_commands.CommitGpgSign, self.c.Tr.AmendingStatus, nil) } diff --git a/pkg/gui/controllers/helpers/gpg_helper.go b/pkg/gui/controllers/helpers/gpg_helper.go index 610442b33..5a17e819c 100644 --- a/pkg/gui/controllers/helpers/gpg_helper.go +++ b/pkg/gui/controllers/helpers/gpg_helper.go @@ -4,6 +4,7 @@ import ( "fmt" "github.com/jesseduffield/gocui" + "github.com/jesseduffield/lazygit/pkg/commands/git_commands" "github.com/jesseduffield/lazygit/pkg/commands/oscommands" "github.com/jesseduffield/lazygit/pkg/gui/types" ) @@ -22,8 +23,8 @@ func NewGpgHelper(c *HelperCommon) *GpgHelper { // WithWaitingStatus we get stuck there and can't return to lazygit. We could // fix this bug, or just stop running subprocesses from within there, given that // we don't need to see a loading status if we're in a subprocess. -func (self *GpgHelper) WithGpgHandling(cmdObj oscommands.ICmdObj, waitingStatus string, onSuccess func() error) error { - useSubprocess := self.c.Git().Config.NeedsGpgSubprocessForCommit() +func (self *GpgHelper) WithGpgHandling(cmdObj oscommands.ICmdObj, configKey git_commands.GpgConfigKey, waitingStatus string, onSuccess func() error) error { + useSubprocess := self.c.Git().Config.NeedsGpgSubprocess(configKey) if useSubprocess { success, err := self.c.RunSubprocess(cmdObj) if success && onSuccess != nil { diff --git a/pkg/gui/controllers/helpers/working_tree_helper.go b/pkg/gui/controllers/helpers/working_tree_helper.go index acec444ad..7c077bcfc 100644 --- a/pkg/gui/controllers/helpers/working_tree_helper.go +++ b/pkg/gui/controllers/helpers/working_tree_helper.go @@ -5,6 +5,7 @@ import ( "fmt" "regexp" + "github.com/jesseduffield/lazygit/pkg/commands/git_commands" "github.com/jesseduffield/lazygit/pkg/commands/models" "github.com/jesseduffield/lazygit/pkg/config" "github.com/jesseduffield/lazygit/pkg/gui/context" @@ -111,10 +112,11 @@ func (self *WorkingTreeHelper) HandleCommitPressWithMessage(initialMessage strin func (self *WorkingTreeHelper) handleCommit(summary string, description string, forceSkipHooks bool) error { cmdObj := self.c.Git().Commit.CommitCmdObj(summary, description, forceSkipHooks) self.c.LogAction(self.c.Tr.Actions.Commit) - return self.gpgHelper.WithGpgHandling(cmdObj, self.c.Tr.CommittingStatus, func() error { - self.commitsHelper.OnCommitSuccess() - return nil - }) + return self.gpgHelper.WithGpgHandling(cmdObj, git_commands.CommitGpgSign, self.c.Tr.CommittingStatus, + func() error { + self.commitsHelper.OnCommitSuccess() + return nil + }) } func (self *WorkingTreeHelper) switchFromCommitMessagePanelToEditor(filepath string, forceSkipHooks bool) error { diff --git a/pkg/gui/controllers/local_commits_controller.go b/pkg/gui/controllers/local_commits_controller.go index 53885c8f5..0ed346824 100644 --- a/pkg/gui/controllers/local_commits_controller.go +++ b/pkg/gui/controllers/local_commits_controller.go @@ -6,6 +6,7 @@ import ( "github.com/go-errors/errors" "github.com/jesseduffield/gocui" + "github.com/jesseduffield/lazygit/pkg/commands/git_commands" "github.com/jesseduffield/lazygit/pkg/commands/models" "github.com/jesseduffield/lazygit/pkg/commands/types/enums" "github.com/jesseduffield/lazygit/pkg/gui/context" @@ -412,6 +413,7 @@ func (self *LocalCommitsController) handleReword(summary string, description str if models.IsHeadCommit(self.c.Model().Commits, self.c.Contexts().LocalCommits.GetSelectedLineIdx()) { // we've selected the top commit so no rebase is required return self.c.Helpers().GPG.WithGpgHandling(self.c.Git().Commit.RewordLastCommit(summary, description), + git_commands.CommitGpgSign, self.c.Tr.RewordingStatus, nil) }