diff options
author | Jesse Duffield <jessedduffield@gmail.com> | 2022-02-06 15:54:26 +1100 |
---|---|---|
committer | Jesse Duffield <jessedduffield@gmail.com> | 2022-03-17 19:13:40 +1100 |
commit | 722410aded4e3d14356c7ab94bfa15abe10359fa (patch) | |
tree | 8e8a57503b0b57bccca5fa8cd146bc699960033f /pkg/gui/controllers/local_commits_controller.go | |
parent | b93b8cc00a2f2ea339b1ecdbc380320556490d3b (diff) |
refactor controllers
Diffstat (limited to 'pkg/gui/controllers/local_commits_controller.go')
-rw-r--r-- | pkg/gui/controllers/local_commits_controller.go | 138 |
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() } |