summaryrefslogtreecommitdiffstats
path: root/pkg/gui/controllers/local_commits_controller.go
diff options
context:
space:
mode:
authorJesse Duffield <jessedduffield@gmail.com>2022-02-06 15:54:26 +1100
committerJesse Duffield <jessedduffield@gmail.com>2022-03-17 19:13:40 +1100
commit722410aded4e3d14356c7ab94bfa15abe10359fa (patch)
tree8e8a57503b0b57bccca5fa8cd146bc699960033f /pkg/gui/controllers/local_commits_controller.go
parentb93b8cc00a2f2ea339b1ecdbc380320556490d3b (diff)
refactor controllers
Diffstat (limited to 'pkg/gui/controllers/local_commits_controller.go')
-rw-r--r--pkg/gui/controllers/local_commits_controller.go138
1 files changed, 48 insertions, 90 deletions
diff --git a/pkg/gui/controllers/local_commits_controller.go b/pkg/gui/controllers/local_commits_controller.go
index bb06a2314..0a7d51ae6 100644
--- a/pkg/gui/controllers/local_commits_controller.go
+++ b/pkg/gui/controllers/local_commits_controller.go
@@ -4,80 +4,37 @@ import (
"fmt"
"github.com/jesseduffield/gocui"
- "github.com/jesseduffield/lazygit/pkg/commands"
- "github.com/jesseduffield/lazygit/pkg/commands/hosting_service"
"github.com/jesseduffield/lazygit/pkg/commands/models"
- "github.com/jesseduffield/lazygit/pkg/commands/oscommands"
"github.com/jesseduffield/lazygit/pkg/gui/context"
"github.com/jesseduffield/lazygit/pkg/gui/types"
"github.com/jesseduffield/lazygit/pkg/utils"
)
type (
- CheckoutRefFn func(refName string, opts types.CheckoutRefOptions) error
- CreateGitResetMenuFn func(refName string) error
SwitchToCommitFilesContextFn func(SwitchToCommitFilesContextOpts) error
- GetHostingServiceMgrFn func() *hosting_service.HostingServiceMgr
PullFilesFn func() error
- CheckMergeOrRebase func(error) error
)
type LocalCommitsController struct {
baseController
- c *types.ControllerCommon
- context *context.LocalCommitsContext
- os *oscommands.OSCommand
- git *commands.GitCommand
- tagsHelper *TagsHelper
- refsHelper IRefsHelper
- cherryPickHelper *CherryPickHelper
- rebaseHelper *RebaseHelper
-
- model *types.Model
- CheckMergeOrRebase CheckMergeOrRebase
+ *controllerCommon
+
pullFiles PullFilesFn
- getHostingServiceMgr GetHostingServiceMgrFn
switchToCommitFilesContext SwitchToCommitFilesContextFn
- getShowWholeGitGraph func() bool
- setShowWholeGitGraph func(bool)
}
var _ types.IController = &LocalCommitsController{}
func NewLocalCommitsController(
- c *types.ControllerCommon,
- context *context.LocalCommitsContext,
- os *oscommands.OSCommand,
- git *commands.GitCommand,
- tagsHelper *TagsHelper,
- refsHelper IRefsHelper,
- cherryPickHelper *CherryPickHelper,
- rebaseHelper *RebaseHelper,
- model *types.Model,
- CheckMergeOrRebase CheckMergeOrRebase,
+ common *controllerCommon,
pullFiles PullFilesFn,
- getHostingServiceMgr GetHostingServiceMgrFn,
switchToCommitFilesContext SwitchToCommitFilesContextFn,
- getShowWholeGitGraph func() bool,
- setShowWholeGitGraph func(bool),
) *LocalCommitsController {
return &LocalCommitsController{
baseController: baseController{},
- c: c,
- context: context,
- os: os,
- git: git,
- tagsHelper: tagsHelper,
- refsHelper: refsHelper,
- cherryPickHelper: cherryPickHelper,
- rebaseHelper: rebaseHelper,
- model: model,
- CheckMergeOrRebase: CheckMergeOrRebase,
+ controllerCommon: common,
pullFiles: pullFiles,
- getHostingServiceMgr: getHostingServiceMgr,
switchToCommitFilesContext: switchToCommitFilesContext,
- getShowWholeGitGraph: getShowWholeGitGraph,
- setShowWholeGitGraph: setShowWholeGitGraph,
}
}
@@ -185,7 +142,7 @@ func (self *LocalCommitsController) GetKeybindings(opts types.KeybindingsOpts) [
},
// {
// Key: gocui.MouseLeft,
- // Handler: func() error { return self.context.HandleClick(self.checkSelected(self.enter)) },
+ // Handler: func() error { return self.context().HandleClick(self.checkSelected(self.enter)) },
// },
}
@@ -305,7 +262,7 @@ func (self *LocalCommitsController) reword(commit *models.Commit) error {
InitialContent: message,
HandleConfirm: func(response string) error {
self.c.LogAction(self.c.Tr.Actions.RewordCommit)
- if err := self.git.Rebase.RewordCommit(self.model.Commits, self.context.GetSelectedLineIdx(), response); err != nil {
+ if err := self.git.Rebase.RewordCommit(self.model.Commits, self.context().GetSelectedLineIdx(), response); err != nil {
return self.c.Error(err)
}
@@ -325,7 +282,7 @@ func (self *LocalCommitsController) rewordEditor() error {
self.c.LogAction(self.c.Tr.Actions.RewordCommit)
subProcess, err := self.git.Rebase.RewordCommitInEditor(
- self.model.Commits, self.context.GetSelectedLineIdx(),
+ self.model.Commits, self.context().GetSelectedLineIdx(),
)
if err != nil {
return self.c.Error(err)
@@ -388,15 +345,15 @@ func (self *LocalCommitsController) pick() error {
}
func (self *LocalCommitsController) interactiveRebase(action string) error {
- err := self.git.Rebase.InteractiveRebase(self.model.Commits, self.context.GetSelectedLineIdx(), action)
- return self.CheckMergeOrRebase(err)
+ err := self.git.Rebase.InteractiveRebase(self.model.Commits, self.context().GetSelectedLineIdx(), action)
+ return self.helpers.MergeAndRebase.CheckMergeOrRebase(err)
}
// handleMidRebaseCommand sees if the selected commit is in fact a rebasing
// commit meaning you are trying to edit the todo file rather than actually
// begin a rebase. It then updates the todo file with that action
func (self *LocalCommitsController) handleMidRebaseCommand(action string) (bool, error) {
- selectedCommit := self.context.GetSelected()
+ selectedCommit := self.context().GetSelected()
if selectedCommit.Status != "rebasing" {
return false, nil
}
@@ -416,7 +373,7 @@ func (self *LocalCommitsController) handleMidRebaseCommand(action string) (bool,
)
if err := self.git.Rebase.EditRebaseTodo(
- self.context.GetSelectedLineIdx(), action,
+ self.context().GetSelectedLineIdx(), action,
); err != nil {
return false, self.c.Error(err)
}
@@ -427,7 +384,7 @@ func (self *LocalCommitsController) handleMidRebaseCommand(action string) (bool,
}
func (self *LocalCommitsController) handleCommitMoveDown() error {
- index := self.context.GetSelectedLineIdx()
+ index := self.context().GetSelectedLineIdx()
commits := self.model.Commits
selectedCommit := self.model.Commits[index]
if selectedCommit.Status == "rebasing" {
@@ -443,7 +400,7 @@ func (self *LocalCommitsController) handleCommitMoveDown() error {
if err := self.git.Rebase.MoveTodoDown(index); err != nil {
return self.c.Error(err)
}
- self.context.MoveSelectedLine(1)
+ self.context().MoveSelectedLine(1)
return self.c.Refresh(types.RefreshOptions{
Mode: types.SYNC, Scope: []types.RefreshableView{types.REBASE_COMMITS},
})
@@ -453,14 +410,14 @@ func (self *LocalCommitsController) handleCommitMoveDown() error {
self.c.LogAction(self.c.Tr.Actions.MoveCommitDown)
err := self.git.Rebase.MoveCommitDown(self.model.Commits, index)
if err == nil {
- self.context.MoveSelectedLine(1)
+ self.context().MoveSelectedLine(1)
}
- return self.CheckMergeOrRebase(err)
+ return self.helpers.MergeAndRebase.CheckMergeOrRebase(err)
})
}
func (self *LocalCommitsController) handleCommitMoveUp() error {
- index := self.context.GetSelectedLineIdx()
+ index := self.context().GetSelectedLineIdx()
if index == 0 {
return nil
}
@@ -478,7 +435,7 @@ func (self *LocalCommitsController) handleCommitMoveUp() error {
if err := self.git.Rebase.MoveTodoDown(index - 1); err != nil {
return self.c.Error(err)
}
- self.context.MoveSelectedLine(-1)
+ self.context().MoveSelectedLine(-1)
return self.c.Refresh(types.RefreshOptions{
Mode: types.SYNC, Scope: []types.RefreshableView{types.REBASE_COMMITS},
})
@@ -488,9 +445,9 @@ func (self *LocalCommitsController) handleCommitMoveUp() error {
self.c.LogAction(self.c.Tr.Actions.MoveCommitUp)
err := self.git.Rebase.MoveCommitDown(self.model.Commits, index-1)
if err == nil {
- self.context.MoveSelectedLine(-1)
+ self.context().MoveSelectedLine(-1)
}
- return self.CheckMergeOrRebase(err)
+ return self.helpers.MergeAndRebase.CheckMergeOrRebase(err)
})
}
@@ -501,8 +458,8 @@ func (self *LocalCommitsController) handleCommitAmendTo() error {
HandleConfirm: func() error {
return self.c.WithWaitingStatus(self.c.Tr.AmendingStatus, func() error {
self.c.LogAction(self.c.Tr.Actions.AmendCommit)
- err := self.git.Rebase.AmendTo(self.context.GetSelected().Sha)
- return self.CheckMergeOrRebase(err)
+ err := self.git.Rebase.AmendTo(self.context().GetSelected().Sha)
+ return self.helpers.MergeAndRebase.CheckMergeOrRebase(err)
})
},
})
@@ -556,7 +513,7 @@ func (self *LocalCommitsController) createRevertMergeCommitMenu(commit *models.C
}
func (self *LocalCommitsController) afterRevertCommit() error {
- self.context.MoveSelectedLine(1)
+ self.context().MoveSelectedLine(1)
return self.c.Refresh(types.RefreshOptions{
Mode: types.BLOCK_UI, Scope: []types.RefreshableView{types.COMMITS, types.BRANCHES},
})
@@ -564,10 +521,9 @@ func (self *LocalCommitsController) afterRevertCommit() error {
func (self *LocalCommitsController) enter(commit *models.Commit) error {
return self.switchToCommitFilesContext(SwitchToCommitFilesContextOpts{
- RefName: commit.Sha,
- CanRebase: true,
- Context: self.context,
- WindowName: "commits",
+ RefName: commit.Sha,
+ CanRebase: true,
+ Context: self.context(),
})
}
@@ -608,14 +564,14 @@ func (self *LocalCommitsController) handleSquashAllAboveFixupCommits(commit *mod
return self.c.WithWaitingStatus(self.c.Tr.SquashingStatus, func() error {
self.c.LogAction(self.c.Tr.Actions.SquashAllAboveFixupCommits)
err := self.git.Rebase.SquashAllAboveFixupCommits(commit.Sha)
- return self.CheckMergeOrRebase(err)
+ return self.helpers.MergeAndRebase.CheckMergeOrRebase(err)
})
},
})
}
func (self *LocalCommitsController) handleTagCommit(commit *models.Commit) error {
- return self.tagsHelper.CreateTagMenu(commit.Sha, func() {})
+ return self.helpers.Tags.CreateTagMenu(commit.Sha, func() {})
}
func (self *LocalCommitsController) handleCheckoutCommit(commit *models.Commit) error {
@@ -624,19 +580,19 @@ func (self *LocalCommitsController) handleCheckoutCommit(commit *models.Commit)
Prompt: self.c.Tr.SureCheckoutThisCommit,
HandleConfirm: func() error {
self.c.LogAction(self.c.Tr.Actions.CheckoutCommit)
- return self.refsHelper.CheckoutRef(commit.Sha, types.CheckoutRefOptions{})
+ return self.helpers.Refs.CheckoutRef(commit.Sha, types.CheckoutRefOptions{})
},
})
}
func (self *LocalCommitsController) handleCreateCommitResetMenu(commit *models.Commit) error {
- return self.refsHelper.CreateGitResetMenu(commit.Sha)
+ return self.helpers.Refs.CreateGitResetMenu(commit.Sha)
}
func (self *LocalCommitsController) openSearch() error {
// we usually lazyload these commits but now that we're searching we need to load them now
- if self.context.GetLimitCommits() {
- self.context.SetLimitCommits(false)
+ if self.context().GetLimitCommits() {
+ self.context().SetLimitCommits(false)
if err := self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.COMMITS}}); err != nil {
return err
}
@@ -649,14 +605,14 @@ func (self *LocalCommitsController) openSearch() error {
func (self *LocalCommitsController) gotoBottom() error {
// we usually lazyload these commits but now that we're jumping to the bottom we need to load them now
- if self.context.GetLimitCommits() {
- self.context.SetLimitCommits(false)
+ if self.context().GetLimitCommits() {
+ self.context().SetLimitCommits(false)
if err := self.c.Refresh(types.RefreshOptions{Mode: types.SYNC, Scope: []types.RefreshableView{types.COMMITS}}); err != nil {
return err
}
}
- self.context.SetSelectedLineIdx(self.context.GetItemsLength() - 1)
+ self.context().SetSelectedLineIdx(self.context().GetItemsLength() - 1)
return nil
}
@@ -684,10 +640,10 @@ func (self *LocalCommitsController) handleOpenLogMenu() error {
{
DisplayString: self.c.Tr.ToggleShowGitGraphAll,
OnPress: func() error {
- self.setShowWholeGitGraph(!self.getShowWholeGitGraph())
+ self.context().SetShowWholeGitGraph(!self.context().GetShowWholeGitGraph())
- if self.getShowWholeGitGraph() {
- self.context.SetLimitCommits(false)
+ if self.context().GetShowWholeGitGraph() {
+ self.context().SetLimitCommits(false)
}
return self.c.WithWaitingStatus(self.c.Tr.LcLoadingCommits, func() error {
@@ -761,9 +717,7 @@ func (self *LocalCommitsController) handleOpenLogMenu() error {
}
func (self *LocalCommitsController) handleOpenCommitInBrowser(commit *models.Commit) error {
- hostingServiceMgr := self.getHostingServiceMgr()
-
- url, err := hostingServiceMgr.GetCommitURL(commit.Sha)
+ url, err := self.helpers.Host.GetCommitURL(commit.Sha)
if err != nil {
return self.c.Error(err)
}
@@ -778,7 +732,7 @@ func (self *LocalCommitsController) handleOpenCommitInBrowser(commit *models.Com
func (self *LocalCommitsController) checkSelected(callback func(*models.Commit) error) func() error {
return func() error {
- commit := self.context.GetSelected()
+ commit := self.context().GetSelected()
if commit == nil {
return nil
}
@@ -788,21 +742,25 @@ func (self *LocalCommitsController) checkSelected(callback func(*models.Commit)
}
func (self *LocalCommitsController) Context() types.Context {
- return self.context
+ return self.context()
+}
+
+func (self *LocalCommitsController) context() *context.LocalCommitsContext {
+ return self.contexts.BranchCommits
}
func (self *LocalCommitsController) newBranch(commit *models.Commit) error {
- return self.refsHelper.NewBranch(commit.RefName(), commit.Description(), "")
+ return self.helpers.Refs.NewBranch(commit.RefName(), commit.Description(), "")
}
func (self *LocalCommitsController) copy(commit *models.Commit) error {
- return self.cherryPickHelper.Copy(commit, self.model.Commits, self.context)
+ return self.helpers.CherryPick.Copy(commit, self.model.Commits, self.context())
}
func (self *LocalCommitsController) copyRange(*models.Commit) error {
- return self.cherryPickHelper.CopyRange(self.context.GetSelectedLineIdx(), self.model.Commits, self.context)
+ return self.helpers.CherryPick.CopyRange(self.context().GetSelectedLineIdx(), self.model.Commits, self.context())
}
func (self *LocalCommitsController) paste() error {
- return self.cherryPickHelper.Paste()
+ return self.helpers.CherryPick.Paste()
}