Skip to content

Commit b210b43

Browse files
committed
Centralize logic regarding WorkingTreeState close to its definition
1 parent cd36e95 commit b210b43

File tree

6 files changed

+52
-64
lines changed

6 files changed

+52
-64
lines changed

pkg/commands/types/enums/enums.go

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package enums
22

3+
import "github.com/jesseduffield/lazygit/pkg/i18n"
4+
35
type WorkingTreeState int
46

57
const (
@@ -16,3 +18,46 @@ func (self WorkingTreeState) IsMerging() bool {
1618
func (self WorkingTreeState) IsRebasing() bool {
1719
return self == WORKING_TREE_STATE_REBASING
1820
}
21+
22+
func (self WorkingTreeState) Title(tr *i18n.TranslationSet) string {
23+
switch self {
24+
case WORKING_TREE_STATE_REBASING:
25+
return tr.RebasingStatus
26+
case WORKING_TREE_STATE_MERGING:
27+
return tr.MergingStatus
28+
default:
29+
// should never actually display this
30+
return "none"
31+
}
32+
}
33+
34+
func (self WorkingTreeState) LowerCaseTitle(tr *i18n.TranslationSet) string {
35+
switch self {
36+
case WORKING_TREE_STATE_REBASING:
37+
return tr.LowercaseRebasingStatus
38+
case WORKING_TREE_STATE_MERGING:
39+
return tr.LowercaseMergingStatus
40+
default:
41+
// should never actually display this
42+
return "none"
43+
}
44+
}
45+
46+
func (self WorkingTreeState) OptionsMenuTitle(tr *i18n.TranslationSet) string {
47+
if self == WORKING_TREE_STATE_MERGING {
48+
return tr.MergeOptionsTitle
49+
}
50+
return tr.RebaseOptionsTitle
51+
}
52+
53+
func (self WorkingTreeState) CommandName() string {
54+
switch self {
55+
case WORKING_TREE_STATE_MERGING:
56+
return "merge"
57+
case WORKING_TREE_STATE_REBASING:
58+
return "rebase"
59+
default:
60+
// shouldn't be possible to land here
61+
return ""
62+
}
63+
}

pkg/gui/controllers/helpers/merge_and_rebase_helper.go

Lines changed: 4 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -67,13 +67,7 @@ func (self *MergeAndRebaseHelper) CreateRebaseOptionsMenu() error {
6767
}
6868
})
6969

70-
var title string
71-
if self.c.Git().Status.WorkingTreeState() == enums.WORKING_TREE_STATE_MERGING {
72-
title = self.c.Tr.MergeOptionsTitle
73-
} else {
74-
title = self.c.Tr.RebaseOptionsTitle
75-
}
76-
70+
title := self.c.Git().Status.WorkingTreeState().OptionsMenuTitle(self.c.Tr)
7771
return self.c.Menu(types.CreateMenuOptions{Title: title, Items: menuItems})
7872
}
7973

@@ -103,15 +97,7 @@ func (self *MergeAndRebaseHelper) genericMergeCommand(command string) error {
10397
}
10498
}
10599

106-
commandType := ""
107-
switch status {
108-
case enums.WORKING_TREE_STATE_MERGING:
109-
commandType = "merge"
110-
case enums.WORKING_TREE_STATE_REBASING:
111-
commandType = "rebase"
112-
default:
113-
// shouldn't be possible to land here
114-
}
100+
commandType := status.CommandName()
115101

116102
// we should end up with a command like 'git merge --continue'
117103

@@ -199,7 +185,7 @@ func (self *MergeAndRebaseHelper) CheckForConflicts(result error) error {
199185
}
200186

201187
func (self *MergeAndRebaseHelper) PromptForConflictHandling() error {
202-
mode := self.workingTreeStateNoun()
188+
mode := self.c.Git().Status.WorkingTreeState().CommandName()
203189
return self.c.Menu(types.CreateMenuOptions{
204190
Title: self.c.Tr.FoundConflictsTitle,
205191
Items: []*types.MenuItem{
@@ -224,7 +210,7 @@ func (self *MergeAndRebaseHelper) PromptForConflictHandling() error {
224210

225211
func (self *MergeAndRebaseHelper) AbortMergeOrRebaseWithConfirm() error {
226212
// prompt user to confirm that they want to abort, then do it
227-
mode := self.workingTreeStateNoun()
213+
mode := self.c.Git().Status.WorkingTreeState().CommandName()
228214
self.c.Confirm(types.ConfirmOpts{
229215
Title: fmt.Sprintf(self.c.Tr.AbortTitle, mode),
230216
Prompt: fmt.Sprintf(self.c.Tr.AbortPrompt, mode),
@@ -236,18 +222,6 @@ func (self *MergeAndRebaseHelper) AbortMergeOrRebaseWithConfirm() error {
236222
return nil
237223
}
238224

239-
func (self *MergeAndRebaseHelper) workingTreeStateNoun() string {
240-
workingTreeState := self.c.Git().Status.WorkingTreeState()
241-
switch workingTreeState {
242-
case enums.WORKING_TREE_STATE_NONE:
243-
return ""
244-
case enums.WORKING_TREE_STATE_MERGING:
245-
return "merge"
246-
default:
247-
return "rebase"
248-
}
249-
}
250-
251225
// PromptToContinueRebase asks the user if they want to continue the rebase/merge that's in progress
252226
func (self *MergeAndRebaseHelper) PromptToContinueRebase() error {
253227
self.c.Confirm(types.ConfirmOpts{

pkg/gui/controllers/helpers/mode_helper.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import (
55
"strings"
66

77
"github.com/jesseduffield/lazygit/pkg/commands/types/enums"
8-
"github.com/jesseduffield/lazygit/pkg/gui/presentation"
98
"github.com/jesseduffield/lazygit/pkg/gui/style"
109
"github.com/jesseduffield/lazygit/pkg/gui/types"
1110
"github.com/samber/lo"
@@ -121,7 +120,7 @@ func (self *ModeHelper) Statuses() []ModeStatus {
121120
Description: func() string {
122121
workingTreeState := self.c.Git().Status.WorkingTreeState()
123122
return self.withResetButton(
124-
presentation.FormatWorkingTreeStateTitle(self.c.Tr, workingTreeState), style.FgYellow,
123+
workingTreeState.Title(self.c.Tr), style.FgYellow,
125124
)
126125
},
127126
Reset: self.mergeAndRebaseHelper.AbortMergeOrRebaseWithConfirm,

pkg/gui/controllers/status_controller.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ func (self *StatusController) onClick(opts gocui.ViewMouseBindingOpts) error {
111111
workingTreeState := self.c.Git().Status.WorkingTreeState()
112112
switch workingTreeState {
113113
case enums.WORKING_TREE_STATE_REBASING, enums.WORKING_TREE_STATE_MERGING:
114-
workingTreeStatus := fmt.Sprintf("(%s)", presentation.FormatWorkingTreeStateLower(self.c.Tr, workingTreeState))
114+
workingTreeStatus := fmt.Sprintf("(%s)", workingTreeState.LowerCaseTitle(self.c.Tr))
115115
if cursorInSubstring(opts.X, upstreamStatus+" ", workingTreeStatus) {
116116
return self.c.Helpers().MergeAndRebase.CreateRebaseOptionsMenu()
117117
}

pkg/gui/presentation/status.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ func FormatStatus(
3232
}
3333

3434
if workingTreeState != enums.WORKING_TREE_STATE_NONE {
35-
status += style.FgYellow.Sprintf("(%s) ", FormatWorkingTreeStateLower(tr, workingTreeState))
35+
status += style.FgYellow.Sprintf("(%s) ", workingTreeState.LowerCaseTitle(tr))
3636
}
3737

3838
name := GetBranchTextStyle(currentBranch.Name).Sprint(currentBranch.Name)

pkg/gui/presentation/working_tree.go

Lines changed: 0 additions & 30 deletions
This file was deleted.

0 commit comments

Comments
 (0)