diff --git a/pkg/commands/types/enums/enums.go b/pkg/commands/types/enums/enums.go index 8513b074e..09fb1211a 100644 --- a/pkg/commands/types/enums/enums.go +++ b/pkg/commands/types/enums/enums.go @@ -1,5 +1,7 @@ package enums +import "github.com/jesseduffield/lazygit/pkg/i18n" + type WorkingTreeState int const ( @@ -16,3 +18,46 @@ func (self WorkingTreeState) IsMerging() bool { func (self WorkingTreeState) IsRebasing() bool { return self == WORKING_TREE_STATE_REBASING } + +func (self WorkingTreeState) Title(tr *i18n.TranslationSet) string { + switch self { + case WORKING_TREE_STATE_REBASING: + return tr.RebasingStatus + case WORKING_TREE_STATE_MERGING: + return tr.MergingStatus + default: + // should never actually display this + return "none" + } +} + +func (self WorkingTreeState) LowerCaseTitle(tr *i18n.TranslationSet) string { + switch self { + case WORKING_TREE_STATE_REBASING: + return tr.LowercaseRebasingStatus + case WORKING_TREE_STATE_MERGING: + return tr.LowercaseMergingStatus + default: + // should never actually display this + return "none" + } +} + +func (self WorkingTreeState) OptionsMenuTitle(tr *i18n.TranslationSet) string { + if self == WORKING_TREE_STATE_MERGING { + return tr.MergeOptionsTitle + } + return tr.RebaseOptionsTitle +} + +func (self WorkingTreeState) CommandName() string { + switch self { + case WORKING_TREE_STATE_MERGING: + return "merge" + case WORKING_TREE_STATE_REBASING: + return "rebase" + default: + // shouldn't be possible to land here + return "" + } +} diff --git a/pkg/gui/controllers/helpers/merge_and_rebase_helper.go b/pkg/gui/controllers/helpers/merge_and_rebase_helper.go index 565df9226..55a322292 100644 --- a/pkg/gui/controllers/helpers/merge_and_rebase_helper.go +++ b/pkg/gui/controllers/helpers/merge_and_rebase_helper.go @@ -67,13 +67,7 @@ func (self *MergeAndRebaseHelper) CreateRebaseOptionsMenu() error { } }) - var title string - if self.c.Git().Status.WorkingTreeState() == enums.WORKING_TREE_STATE_MERGING { - title = self.c.Tr.MergeOptionsTitle - } else { - title = self.c.Tr.RebaseOptionsTitle - } - + title := self.c.Git().Status.WorkingTreeState().OptionsMenuTitle(self.c.Tr) return self.c.Menu(types.CreateMenuOptions{Title: title, Items: menuItems}) } @@ -103,15 +97,7 @@ func (self *MergeAndRebaseHelper) genericMergeCommand(command string) error { } } - commandType := "" - switch status { - case enums.WORKING_TREE_STATE_MERGING: - commandType = "merge" - case enums.WORKING_TREE_STATE_REBASING: - commandType = "rebase" - default: - // shouldn't be possible to land here - } + commandType := status.CommandName() // we should end up with a command like 'git merge --continue' @@ -199,7 +185,7 @@ func (self *MergeAndRebaseHelper) CheckForConflicts(result error) error { } func (self *MergeAndRebaseHelper) PromptForConflictHandling() error { - mode := self.workingTreeStateNoun() + mode := self.c.Git().Status.WorkingTreeState().CommandName() return self.c.Menu(types.CreateMenuOptions{ Title: self.c.Tr.FoundConflictsTitle, Items: []*types.MenuItem{ @@ -224,7 +210,7 @@ func (self *MergeAndRebaseHelper) PromptForConflictHandling() error { func (self *MergeAndRebaseHelper) AbortMergeOrRebaseWithConfirm() error { // prompt user to confirm that they want to abort, then do it - mode := self.workingTreeStateNoun() + mode := self.c.Git().Status.WorkingTreeState().CommandName() self.c.Confirm(types.ConfirmOpts{ Title: fmt.Sprintf(self.c.Tr.AbortTitle, mode), Prompt: fmt.Sprintf(self.c.Tr.AbortPrompt, mode), @@ -236,18 +222,6 @@ func (self *MergeAndRebaseHelper) AbortMergeOrRebaseWithConfirm() error { return nil } -func (self *MergeAndRebaseHelper) workingTreeStateNoun() string { - workingTreeState := self.c.Git().Status.WorkingTreeState() - switch workingTreeState { - case enums.WORKING_TREE_STATE_NONE: - return "" - case enums.WORKING_TREE_STATE_MERGING: - return "merge" - default: - return "rebase" - } -} - // PromptToContinueRebase asks the user if they want to continue the rebase/merge that's in progress func (self *MergeAndRebaseHelper) PromptToContinueRebase() error { self.c.Confirm(types.ConfirmOpts{ diff --git a/pkg/gui/controllers/helpers/mode_helper.go b/pkg/gui/controllers/helpers/mode_helper.go index 0259be97e..0c964d2de 100644 --- a/pkg/gui/controllers/helpers/mode_helper.go +++ b/pkg/gui/controllers/helpers/mode_helper.go @@ -5,7 +5,6 @@ import ( "strings" "github.com/jesseduffield/lazygit/pkg/commands/types/enums" - "github.com/jesseduffield/lazygit/pkg/gui/presentation" "github.com/jesseduffield/lazygit/pkg/gui/style" "github.com/jesseduffield/lazygit/pkg/gui/types" "github.com/samber/lo" @@ -121,7 +120,7 @@ func (self *ModeHelper) Statuses() []ModeStatus { Description: func() string { workingTreeState := self.c.Git().Status.WorkingTreeState() return self.withResetButton( - presentation.FormatWorkingTreeStateTitle(self.c.Tr, workingTreeState), style.FgYellow, + workingTreeState.Title(self.c.Tr), style.FgYellow, ) }, Reset: self.mergeAndRebaseHelper.AbortMergeOrRebaseWithConfirm, diff --git a/pkg/gui/controllers/status_controller.go b/pkg/gui/controllers/status_controller.go index a0012227b..31b264e17 100644 --- a/pkg/gui/controllers/status_controller.go +++ b/pkg/gui/controllers/status_controller.go @@ -111,7 +111,7 @@ func (self *StatusController) onClick(opts gocui.ViewMouseBindingOpts) error { workingTreeState := self.c.Git().Status.WorkingTreeState() switch workingTreeState { case enums.WORKING_TREE_STATE_REBASING, enums.WORKING_TREE_STATE_MERGING: - workingTreeStatus := fmt.Sprintf("(%s)", presentation.FormatWorkingTreeStateLower(self.c.Tr, workingTreeState)) + workingTreeStatus := fmt.Sprintf("(%s)", workingTreeState.LowerCaseTitle(self.c.Tr)) if cursorInSubstring(opts.X, upstreamStatus+" ", workingTreeStatus) { return self.c.Helpers().MergeAndRebase.CreateRebaseOptionsMenu() } diff --git a/pkg/gui/presentation/status.go b/pkg/gui/presentation/status.go index 3cc137b35..3c0fe068a 100644 --- a/pkg/gui/presentation/status.go +++ b/pkg/gui/presentation/status.go @@ -32,7 +32,7 @@ func FormatStatus( } if workingTreeState != enums.WORKING_TREE_STATE_NONE { - status += style.FgYellow.Sprintf("(%s) ", FormatWorkingTreeStateLower(tr, workingTreeState)) + status += style.FgYellow.Sprintf("(%s) ", workingTreeState.LowerCaseTitle(tr)) } name := GetBranchTextStyle(currentBranch.Name).Sprint(currentBranch.Name) diff --git a/pkg/gui/presentation/working_tree.go b/pkg/gui/presentation/working_tree.go deleted file mode 100644 index 1e2eadd1a..000000000 --- a/pkg/gui/presentation/working_tree.go +++ /dev/null @@ -1,30 +0,0 @@ -package presentation - -import ( - "github.com/jesseduffield/lazygit/pkg/commands/types/enums" - "github.com/jesseduffield/lazygit/pkg/i18n" -) - -func FormatWorkingTreeStateTitle(tr *i18n.TranslationSet, workingTreeState enums.WorkingTreeState) string { - switch workingTreeState { - case enums.WORKING_TREE_STATE_REBASING: - return tr.RebasingStatus - case enums.WORKING_TREE_STATE_MERGING: - return tr.MergingStatus - default: - // should never actually display this - return "none" - } -} - -func FormatWorkingTreeStateLower(tr *i18n.TranslationSet, workingTreeState enums.WorkingTreeState) string { - switch workingTreeState { - case enums.WORKING_TREE_STATE_REBASING: - return tr.LowercaseRebasingStatus - case enums.WORKING_TREE_STATE_MERGING: - return tr.LowercaseMergingStatus - default: - // should never actually display this - return "none" - } -}