From 711674f6cd68ed3a35e5b0329ff0cf3289fbc7d1 Mon Sep 17 00:00:00 2001 From: Jesse Duffield Date: Thu, 23 Mar 2023 13:04:57 +1100 Subject: [PATCH] standardise controller helper methods --- pkg/gui/controllers.go | 17 +---- .../controllers/basic_commits_controller.go | 18 +++--- pkg/gui/controllers/bisect_controller.go | 30 ++++----- pkg/gui/controllers/branches_controller.go | 26 ++++---- pkg/gui/controllers/command_log_controller.go | 2 +- .../controllers/commit_message_controller.go | 4 +- .../controllers/commits_files_controller.go | 34 +++++----- pkg/gui/controllers/common.go | 36 ++--------- .../controllers/confirmation_controller.go | 6 +- .../controllers/context_lines_controller.go | 2 +- pkg/gui/controllers/files_controller.go | 64 +++++++++---------- .../controllers/files_remove_controller.go | 18 +++--- pkg/gui/controllers/git_flow_controller.go | 8 +-- pkg/gui/controllers/global_controller.go | 2 +- .../controllers/local_commits_controller.go | 58 ++++++++--------- pkg/gui/controllers/menu_controller.go | 2 +- .../controllers/merge_conflicts_controller.go | 2 +- .../controllers/patch_building_controller.go | 20 +++--- .../controllers/patch_explorer_controller.go | 2 +- .../controllers/reflog_commits_controller.go | 11 ++-- .../controllers/remote_branches_controller.go | 10 +-- pkg/gui/controllers/remotes_controller.go | 36 ++++++----- pkg/gui/controllers/snake_controller.go | 6 +- pkg/gui/controllers/staging_controller.go | 14 ++-- pkg/gui/controllers/stash_controller.go | 12 ++-- pkg/gui/controllers/status_controller.go | 6 +- pkg/gui/controllers/sub_commits_controller.go | 15 +++-- pkg/gui/controllers/submodules_controller.go | 28 ++++---- pkg/gui/controllers/suggestions_controller.go | 4 +- .../switch_to_sub_commits_controller.go | 20 +++--- pkg/gui/controllers/sync_controller.go | 8 +-- pkg/gui/controllers/tags_controller.go | 10 +-- pkg/gui/controllers/undo_controller.go | 10 +-- .../controllers/workspace_reset_controller.go | 18 +++--- 34 files changed, 262 insertions(+), 297 deletions(-) diff --git a/pkg/gui/controllers.go b/pkg/gui/controllers.go index fa20b119f..8ec2303d4 100644 --- a/pkg/gui/controllers.go +++ b/pkg/gui/controllers.go @@ -13,8 +13,6 @@ import ( func (gui *Gui) resetControllers() { helperCommon := gui.c - osCommand := gui.os - model := gui.State.Model refsHelper := helpers.NewRefsHelper(helperCommon) rebaseHelper := helpers.NewMergeAndRebaseHelper(helperCommon, refsHelper) @@ -68,16 +66,7 @@ func (gui *Gui) resetControllers() { gui.helpers, ) - common := controllers.NewControllerCommon( - helperCommon, - osCommand, - gui.git, - gui.helpers, - model, - gui.State.Contexts, - gui.State.Modes, - &gui.Mutexes, - ) + common := controllers.NewControllerCommon(helperCommon, gui.helpers) syncController := controllers.NewSyncController( common, @@ -140,8 +129,8 @@ func (gui *Gui) resetControllers() { stagingSecondaryController := controllers.NewStagingController(common, gui.State.Contexts.StagingSecondary, gui.State.Contexts.Staging, true) patchBuildingController := controllers.NewPatchBuildingController(common) snakeController := controllers.NewSnakeController(common) - reflogCommitsController := controllers.NewReflogCommitsController(common, gui.State.Contexts.ReflogCommits) - subCommitsController := controllers.NewSubCommitsController(common, gui.State.Contexts.SubCommits) + reflogCommitsController := controllers.NewReflogCommitsController(common) + subCommitsController := controllers.NewSubCommitsController(common) statusController := controllers.NewStatusController(common) commandLogController := controllers.NewCommandLogController(common) confirmationController := controllers.NewConfirmationController(common) diff --git a/pkg/gui/controllers/basic_commits_controller.go b/pkg/gui/controllers/basic_commits_controller.go index cecba00fe..340b14c0b 100644 --- a/pkg/gui/controllers/basic_commits_controller.go +++ b/pkg/gui/controllers/basic_commits_controller.go @@ -141,7 +141,7 @@ func (self *BasicCommitsController) copyCommitAttribute(commit *models.Commit) e func (self *BasicCommitsController) copyCommitSHAToClipboard(commit *models.Commit) error { self.c.LogAction(self.c.Tr.Actions.CopyCommitSHAToClipboard) - if err := self.os.CopyToClipboard(commit.Sha); err != nil { + if err := self.c.OS().CopyToClipboard(commit.Sha); err != nil { return self.c.Error(err) } @@ -156,7 +156,7 @@ func (self *BasicCommitsController) copyCommitURLToClipboard(commit *models.Comm } self.c.LogAction(self.c.Tr.Actions.CopyCommitURLToClipboard) - if err := self.os.CopyToClipboard(url); err != nil { + if err := self.c.OS().CopyToClipboard(url); err != nil { return self.c.Error(err) } @@ -165,13 +165,13 @@ func (self *BasicCommitsController) copyCommitURLToClipboard(commit *models.Comm } func (self *BasicCommitsController) copyCommitDiffToClipboard(commit *models.Commit) error { - diff, err := self.git.Commit.GetCommitDiff(commit.Sha) + diff, err := self.c.Git().Commit.GetCommitDiff(commit.Sha) if err != nil { return self.c.Error(err) } self.c.LogAction(self.c.Tr.Actions.CopyCommitDiffToClipboard) - if err := self.os.CopyToClipboard(diff); err != nil { + if err := self.c.OS().CopyToClipboard(diff); err != nil { return self.c.Error(err) } @@ -180,7 +180,7 @@ func (self *BasicCommitsController) copyCommitDiffToClipboard(commit *models.Com } func (self *BasicCommitsController) copyAuthorToClipboard(commit *models.Commit) error { - author, err := self.git.Commit.GetCommitAuthor(commit.Sha) + author, err := self.c.Git().Commit.GetCommitAuthor(commit.Sha) if err != nil { return self.c.Error(err) } @@ -188,7 +188,7 @@ func (self *BasicCommitsController) copyAuthorToClipboard(commit *models.Commit) formattedAuthor := fmt.Sprintf("%s <%s>", author.Name, author.Email) self.c.LogAction(self.c.Tr.Actions.CopyCommitAuthorToClipboard) - if err := self.os.CopyToClipboard(formattedAuthor); err != nil { + if err := self.c.OS().CopyToClipboard(formattedAuthor); err != nil { return self.c.Error(err) } @@ -197,13 +197,13 @@ func (self *BasicCommitsController) copyAuthorToClipboard(commit *models.Commit) } func (self *BasicCommitsController) copyCommitMessageToClipboard(commit *models.Commit) error { - message, err := self.git.Commit.GetCommitMessage(commit.Sha) + message, err := self.c.Git().Commit.GetCommitMessage(commit.Sha) if err != nil { return self.c.Error(err) } self.c.LogAction(self.c.Tr.Actions.CopyCommitMessageToClipboard) - if err := self.os.CopyToClipboard(message); err != nil { + if err := self.c.OS().CopyToClipboard(message); err != nil { return self.c.Error(err) } @@ -218,7 +218,7 @@ func (self *BasicCommitsController) openInBrowser(commit *models.Commit) error { } self.c.LogAction(self.c.Tr.Actions.OpenCommitInBrowser) - if err := self.os.OpenLink(url); err != nil { + if err := self.c.OS().OpenLink(url); err != nil { return self.c.Error(err) } diff --git a/pkg/gui/controllers/bisect_controller.go b/pkg/gui/controllers/bisect_controller.go index 083b6dce8..6531b1409 100644 --- a/pkg/gui/controllers/bisect_controller.go +++ b/pkg/gui/controllers/bisect_controller.go @@ -42,7 +42,7 @@ func (self *BisectController) GetKeybindings(opts types.KeybindingsOpts) []*type func (self *BisectController) openMenu(commit *models.Commit) error { // no shame in getting this directly rather than using the cached value // given how cheap it is to obtain - info := self.git.Bisect.GetInfo() + info := self.c.Git().Bisect.GetInfo() if info.Started() { return self.openMidBisectMenu(info, commit) } else { @@ -63,14 +63,14 @@ func (self *BisectController) openMidBisectMenu(info *git_commands.BisectInfo, c selectCurrentAfter := info.GetCurrentSha() == "" || info.GetCurrentSha() == commit.Sha // we need to wait to reselect if our bisect commits aren't ancestors of our 'start' // ref, because we'll be reloading our commits in that case. - waitToReselect := selectCurrentAfter && !self.git.Bisect.ReachableFromStart(info) + waitToReselect := selectCurrentAfter && !self.c.Git().Bisect.ReachableFromStart(info) menuItems := []*types.MenuItem{ { Label: fmt.Sprintf(self.c.Tr.Bisect.Mark, commit.ShortSha(), info.NewTerm()), OnPress: func() error { self.c.LogAction(self.c.Tr.Actions.BisectMark) - if err := self.git.Bisect.Mark(commit.Sha, info.NewTerm()); err != nil { + if err := self.c.Git().Bisect.Mark(commit.Sha, info.NewTerm()); err != nil { return self.c.Error(err) } @@ -82,7 +82,7 @@ func (self *BisectController) openMidBisectMenu(info *git_commands.BisectInfo, c Label: fmt.Sprintf(self.c.Tr.Bisect.Mark, commit.ShortSha(), info.OldTerm()), OnPress: func() error { self.c.LogAction(self.c.Tr.Actions.BisectMark) - if err := self.git.Bisect.Mark(commit.Sha, info.OldTerm()); err != nil { + if err := self.c.Git().Bisect.Mark(commit.Sha, info.OldTerm()); err != nil { return self.c.Error(err) } @@ -94,7 +94,7 @@ func (self *BisectController) openMidBisectMenu(info *git_commands.BisectInfo, c Label: fmt.Sprintf(self.c.Tr.Bisect.Skip, commit.ShortSha()), OnPress: func() error { self.c.LogAction(self.c.Tr.Actions.BisectSkip) - if err := self.git.Bisect.Skip(commit.Sha); err != nil { + if err := self.c.Git().Bisect.Skip(commit.Sha); err != nil { return self.c.Error(err) } @@ -125,11 +125,11 @@ func (self *BisectController) openStartBisectMenu(info *git_commands.BisectInfo, Label: fmt.Sprintf(self.c.Tr.Bisect.MarkStart, commit.ShortSha(), info.NewTerm()), OnPress: func() error { self.c.LogAction(self.c.Tr.Actions.StartBisect) - if err := self.git.Bisect.Start(); err != nil { + if err := self.c.Git().Bisect.Start(); err != nil { return self.c.Error(err) } - if err := self.git.Bisect.Mark(commit.Sha, info.NewTerm()); err != nil { + if err := self.c.Git().Bisect.Mark(commit.Sha, info.NewTerm()); err != nil { return self.c.Error(err) } @@ -141,11 +141,11 @@ func (self *BisectController) openStartBisectMenu(info *git_commands.BisectInfo, Label: fmt.Sprintf(self.c.Tr.Bisect.MarkStart, commit.ShortSha(), info.OldTerm()), OnPress: func() error { self.c.LogAction(self.c.Tr.Actions.StartBisect) - if err := self.git.Bisect.Start(); err != nil { + if err := self.c.Git().Bisect.Start(); err != nil { return self.c.Error(err) } - if err := self.git.Bisect.Mark(commit.Sha, info.OldTerm()); err != nil { + if err := self.c.Git().Bisect.Mark(commit.Sha, info.OldTerm()); err != nil { return self.c.Error(err) } @@ -163,7 +163,7 @@ func (self *BisectController) showBisectCompleteMessage(candidateShas []string) prompt = self.c.Tr.Bisect.CompletePromptIndeterminate } - formattedCommits, err := self.git.Commit.GetCommitsOneline(candidateShas) + formattedCommits, err := self.c.Git().Commit.GetCommitsOneline(candidateShas) if err != nil { return self.c.Error(err) } @@ -173,7 +173,7 @@ func (self *BisectController) showBisectCompleteMessage(candidateShas []string) Prompt: fmt.Sprintf(prompt, strings.TrimSpace(formattedCommits)), HandleConfirm: func() error { self.c.LogAction(self.c.Tr.Actions.ResetBisect) - if err := self.git.Bisect.Reset(); err != nil { + if err := self.c.Git().Bisect.Reset(); err != nil { return self.c.Error(err) } @@ -183,7 +183,7 @@ func (self *BisectController) showBisectCompleteMessage(candidateShas []string) } func (self *BisectController) afterMark(selectCurrent bool, waitToReselect bool) error { - done, candidateShas, err := self.git.Bisect.IsDone() + done, candidateShas, err := self.c.Git().Bisect.IsDone() if err != nil { return self.c.Error(err) } @@ -216,10 +216,10 @@ func (self *BisectController) afterBisectMarkRefresh(selectCurrent bool, waitToR } func (self *BisectController) selectCurrentBisectCommit() { - info := self.git.Bisect.GetInfo() + info := self.c.Git().Bisect.GetInfo() if info.GetCurrentSha() != "" { // find index of commit with that sha, move cursor to that. - for i, commit := range self.model.Commits { + for i, commit := range self.c.Model().Commits { if commit.Sha == info.GetCurrentSha() { self.context().SetSelectedLineIdx(i) _ = self.context().HandleFocus(types.OnFocusOpts{}) @@ -245,5 +245,5 @@ func (self *BisectController) Context() types.Context { } func (self *BisectController) context() *context.LocalCommitsContext { - return self.contexts.LocalCommits + return self.c.Contexts().LocalCommits } diff --git a/pkg/gui/controllers/branches_controller.go b/pkg/gui/controllers/branches_controller.go index 27b3004c8..03e088368 100644 --- a/pkg/gui/controllers/branches_controller.go +++ b/pkg/gui/controllers/branches_controller.go @@ -142,7 +142,7 @@ func (self *BranchesController) setUpstream(selectedBranch *models.Branch) error { LabelColumns: []string{self.c.Tr.LcUnsetUpstream}, OnPress: func() error { - if err := self.git.Branch.UnsetUpstream(selectedBranch.Name); err != nil { + if err := self.c.Git().Branch.UnsetUpstream(selectedBranch.Name); err != nil { return self.c.Error(err) } if err := self.c.Refresh(types.RefreshOptions{ @@ -167,7 +167,7 @@ func (self *BranchesController) setUpstream(selectedBranch *models.Branch) error return self.c.Error(err) } - if err := self.git.Branch.SetUpstream(upstreamRemote, upstreamBranch, selectedBranch.Name); err != nil { + if err := self.c.Git().Branch.SetUpstream(upstreamRemote, upstreamBranch, selectedBranch.Name); err != nil { return self.c.Error(err) } if err := self.c.Refresh(types.RefreshOptions{ @@ -193,7 +193,7 @@ func (self *BranchesController) Context() types.Context { } func (self *BranchesController) context() *context.BranchesContext { - return self.contexts.Branches + return self.c.Contexts().Branches } func (self *BranchesController) press(selectedBranch *models.Branch) error { @@ -218,7 +218,7 @@ func (self *BranchesController) handleCreatePullRequestMenu(selectedBranch *mode func (self *BranchesController) copyPullRequestURL() error { branch := self.context().GetSelected() - branchExistsOnRemote := self.git.Remote.CheckRemoteBranchExists(branch.Name) + branchExistsOnRemote := self.c.Git().Remote.CheckRemoteBranchExists(branch.Name) if !branchExistsOnRemote { return self.c.Error(errors.New(self.c.Tr.NoBranchOnRemote)) @@ -229,7 +229,7 @@ func (self *BranchesController) copyPullRequestURL() error { return self.c.Error(err) } self.c.LogAction(self.c.Tr.Actions.CopyPullRequestURL) - if err := self.os.CopyToClipboard(url); err != nil { + if err := self.c.OS().CopyToClipboard(url); err != nil { return self.c.Error(err) } @@ -248,7 +248,7 @@ func (self *BranchesController) forceCheckout() error { Prompt: message, HandleConfirm: func() error { self.c.LogAction(self.c.Tr.Actions.ForceCheckoutBranch) - if err := self.git.Branch.Checkout(branch.Name, git_commands.CheckoutOptions{Force: true}); err != nil { + if err := self.c.Git().Branch.Checkout(branch.Name, git_commands.CheckoutOptions{Force: true}); err != nil { _ = self.c.Error(err) } return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}) @@ -284,7 +284,7 @@ func (self *BranchesController) createNewBranchWithName(newBranchName string) er return nil } - if err := self.git.Branch.New(newBranchName, branch.FullRefName()); err != nil { + if err := self.c.Git().Branch.New(newBranchName, branch.FullRefName()); err != nil { return self.c.Error(err) } @@ -320,7 +320,7 @@ func (self *BranchesController) deleteWithForce(selectedBranch *models.Branch, f Prompt: message, HandleConfirm: func() error { self.c.LogAction(self.c.Tr.Actions.DeleteBranch) - if err := self.git.Branch.Delete(selectedBranch.Name, force); err != nil { + if err := self.c.Git().Branch.Delete(selectedBranch.Name, force); err != nil { errMessage := err.Error() if !force && strings.Contains(errMessage, "git branch -D ") { return self.deleteWithForce(selectedBranch, true) @@ -367,7 +367,7 @@ func (self *BranchesController) fastForward(branch *models.Branch) error { if branch == self.helpers.Refs.GetCheckedOutRef() { self.c.LogAction(action) - err := self.git.Sync.Pull( + err := self.c.Git().Sync.Pull( git_commands.PullOptions{ RemoteName: branch.UpstreamRemote, BranchName: branch.UpstreamBranch, @@ -381,7 +381,7 @@ func (self *BranchesController) fastForward(branch *models.Branch) error { return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}) } else { self.c.LogAction(action) - err := self.git.Sync.FastForward(branch.Name, branch.UpstreamRemote, branch.UpstreamBranch) + err := self.c.Git().Sync.FastForward(branch.Name, branch.UpstreamRemote, branch.UpstreamBranch) if err != nil { _ = self.c.Error(err) } @@ -407,7 +407,7 @@ func (self *BranchesController) rename(branch *models.Branch) error { InitialContent: branch.Name, HandleConfirm: func(newBranchName string) error { self.c.LogAction(self.c.Tr.Actions.RenameBranch) - if err := self.git.Branch.Rename(branch.Name, newBranchName); err != nil { + if err := self.c.Git().Branch.Rename(branch.Name, newBranchName); err != nil { return self.c.Error(err) } @@ -415,7 +415,7 @@ func (self *BranchesController) rename(branch *models.Branch) error { _ = self.c.Refresh(types.RefreshOptions{Mode: types.SYNC, Scope: []types.RefreshableView{types.BRANCHES}}) // now that we've got our stuff again we need to find that branch and reselect it. - for i, newBranch := range self.model.Branches { + for i, newBranch := range self.c.Model().Branches { if newBranch.Name == newBranchName { self.context().SetSelectedLineIdx(i) if err := self.context().HandleRender(); err != nil { @@ -502,7 +502,7 @@ func (self *BranchesController) createPullRequest(from string, to string) error self.c.LogAction(self.c.Tr.Actions.OpenPullRequest) - if err := self.os.OpenLink(url); err != nil { + if err := self.c.OS().OpenLink(url); err != nil { return self.c.Error(err) } diff --git a/pkg/gui/controllers/command_log_controller.go b/pkg/gui/controllers/command_log_controller.go index 45520edd9..3e6e7c11a 100644 --- a/pkg/gui/controllers/command_log_controller.go +++ b/pkg/gui/controllers/command_log_controller.go @@ -38,5 +38,5 @@ func (self *CommandLogController) Context() types.Context { } func (self *CommandLogController) context() types.Context { - return self.contexts.CommandLog + return self.c.Contexts().CommandLog } diff --git a/pkg/gui/controllers/commit_message_controller.go b/pkg/gui/controllers/commit_message_controller.go index 5db89b0e2..1b28ec887 100644 --- a/pkg/gui/controllers/commit_message_controller.go +++ b/pkg/gui/controllers/commit_message_controller.go @@ -65,7 +65,7 @@ func (self *CommitMessageController) Context() types.Context { // this method is pointless in this context but I'm keeping it consistent // with other contexts so that when generics arrive it's easier to refactor func (self *CommitMessageController) context() *context.CommitMessageContext { - return self.contexts.CommitMessage + return self.c.Contexts().CommitMessage } func (self *CommitMessageController) confirm() error { @@ -76,7 +76,7 @@ func (self *CommitMessageController) confirm() error { return self.c.ErrorMsg(self.c.Tr.CommitWithoutMessageErr) } - cmdObj := self.git.Commit.CommitCmdObj(message) + cmdObj := self.c.Git().Commit.CommitCmdObj(message) self.c.LogAction(self.c.Tr.Actions.Commit) _ = self.c.PopContext() diff --git a/pkg/gui/controllers/commits_files_controller.go b/pkg/gui/controllers/commits_files_controller.go index a5c5e667d..34e859211 100644 --- a/pkg/gui/controllers/commits_files_controller.go +++ b/pkg/gui/controllers/commits_files_controller.go @@ -99,7 +99,7 @@ func (self *CommitFilesController) Context() types.Context { } func (self *CommitFilesController) context() *context.CommitFilesContext { - return self.contexts.CommitFiles + return self.c.Contexts().CommitFiles } func (self *CommitFilesController) onClickMain(opts gocui.ViewMouseBindingOpts) error { @@ -112,7 +112,7 @@ func (self *CommitFilesController) onClickMain(opts gocui.ViewMouseBindingOpts) func (self *CommitFilesController) checkout(node *filetree.CommitFileNode) error { self.c.LogAction(self.c.Tr.Actions.CheckoutFile) - if err := self.git.WorkingTree.CheckoutFile(self.context().GetRef().RefName(), node.GetPath()); err != nil { + if err := self.c.Git().WorkingTree.CheckoutFile(self.context().GetRef().RefName(), node.GetPath()); err != nil { return self.c.Error(err) } @@ -130,7 +130,7 @@ func (self *CommitFilesController) discard(node *filetree.CommitFileNode) error HandleConfirm: func() error { return self.c.WithWaitingStatus(self.c.Tr.RebasingStatus, func() error { self.c.LogAction(self.c.Tr.Actions.DiscardOldFileChange) - if err := self.git.Rebase.DiscardOldFileChanges(self.model.Commits, self.contexts.LocalCommits.GetSelectedLineIdx(), node.GetPath()); err != nil { + if err := self.c.Git().Rebase.DiscardOldFileChanges(self.c.Model().Commits, self.c.Contexts().LocalCommits.GetSelectedLineIdx(), node.GetPath()); err != nil { if err := self.helpers.MergeAndRebase.CheckMergeOrRebase(err); err != nil { return err } @@ -157,7 +157,7 @@ func (self *CommitFilesController) edit(node *filetree.CommitFileNode) error { func (self *CommitFilesController) toggleForPatch(node *filetree.CommitFileNode) error { toggle := func() error { return self.c.WithWaitingStatus(self.c.Tr.LcUpdatingPatch, func() error { - if !self.git.Patch.PatchBuilder.Active() { + if !self.c.Git().Patch.PatchBuilder.Active() { if err := self.startPatchBuilder(); err != nil { return err } @@ -166,34 +166,34 @@ func (self *CommitFilesController) toggleForPatch(node *filetree.CommitFileNode) // if there is any file that hasn't been fully added we'll fully add everything, // otherwise we'll remove everything adding := node.SomeFile(func(file *models.CommitFile) bool { - return self.git.Patch.PatchBuilder.GetFileStatus(file.Name, self.context().GetRef().RefName()) != patch.WHOLE + return self.c.Git().Patch.PatchBuilder.GetFileStatus(file.Name, self.context().GetRef().RefName()) != patch.WHOLE }) err := node.ForEachFile(func(file *models.CommitFile) error { if adding { - return self.git.Patch.PatchBuilder.AddFileWhole(file.Name) + return self.c.Git().Patch.PatchBuilder.AddFileWhole(file.Name) } else { - return self.git.Patch.PatchBuilder.RemoveFile(file.Name) + return self.c.Git().Patch.PatchBuilder.RemoveFile(file.Name) } }) if err != nil { return self.c.Error(err) } - if self.git.Patch.PatchBuilder.IsEmpty() { - self.git.Patch.PatchBuilder.Reset() + if self.c.Git().Patch.PatchBuilder.IsEmpty() { + self.c.Git().Patch.PatchBuilder.Reset() } return self.c.PostRefreshUpdate(self.context()) }) } - if self.git.Patch.PatchBuilder.Active() && self.git.Patch.PatchBuilder.To != self.context().GetRef().RefName() { + if self.c.Git().Patch.PatchBuilder.Active() && self.c.Git().Patch.PatchBuilder.To != self.context().GetRef().RefName() { return self.c.Confirm(types.ConfirmOpts{ Title: self.c.Tr.DiscardPatch, Prompt: self.c.Tr.DiscardPatchConfirm, HandleConfirm: func() error { - self.git.Patch.PatchBuilder.Reset() + self.c.Git().Patch.PatchBuilder.Reset() return toggle() }, }) @@ -213,9 +213,9 @@ func (self *CommitFilesController) startPatchBuilder() error { canRebase := commitFilesContext.GetCanRebase() ref := commitFilesContext.GetRef() to := ref.RefName() - from, reverse := self.modes.Diffing.GetFromAndReverseArgsForDiff(ref.ParentRefName()) + from, reverse := self.c.Modes().Diffing.GetFromAndReverseArgsForDiff(ref.ParentRefName()) - self.git.Patch.PatchBuilder.Start(from, to, reverse, canRebase) + self.c.Git().Patch.PatchBuilder.Start(from, to, reverse, canRebase) return nil } @@ -229,21 +229,21 @@ func (self *CommitFilesController) enterCommitFile(node *filetree.CommitFileNode } enterTheFile := func() error { - if !self.git.Patch.PatchBuilder.Active() { + if !self.c.Git().Patch.PatchBuilder.Active() { if err := self.startPatchBuilder(); err != nil { return err } } - return self.c.PushContext(self.contexts.CustomPatchBuilder, opts) + return self.c.PushContext(self.c.Contexts().CustomPatchBuilder, opts) } - if self.git.Patch.PatchBuilder.Active() && self.git.Patch.PatchBuilder.To != self.context().GetRef().RefName() { + if self.c.Git().Patch.PatchBuilder.Active() && self.c.Git().Patch.PatchBuilder.To != self.context().GetRef().RefName() { return self.c.Confirm(types.ConfirmOpts{ Title: self.c.Tr.DiscardPatch, Prompt: self.c.Tr.DiscardPatchConfirm, HandleConfirm: func() error { - self.git.Patch.PatchBuilder.Reset() + self.c.Git().Patch.PatchBuilder.Reset() return enterTheFile() }, }) diff --git a/pkg/gui/controllers/common.go b/pkg/gui/controllers/common.go index e1af81732..1c14b7f4e 100644 --- a/pkg/gui/controllers/common.go +++ b/pkg/gui/controllers/common.go @@ -1,48 +1,20 @@ package controllers import ( - "github.com/jesseduffield/lazygit/pkg/commands" - "github.com/jesseduffield/lazygit/pkg/commands/oscommands" - "github.com/jesseduffield/lazygit/pkg/gui/context" "github.com/jesseduffield/lazygit/pkg/gui/controllers/helpers" - "github.com/jesseduffield/lazygit/pkg/gui/types" ) type controllerCommon struct { - c *helpers.HelperCommon - helpers *helpers.Helpers - contexts *context.ContextTree - - // TODO: use helperCommon's .OS() method instead of this - os *oscommands.OSCommand - // TODO: use helperCommon's .Git() method instead of this - git *commands.GitCommand - // TODO: use helperCommon's .Model() method instead of this - model *types.Model - // TODO: use helperCommon's .Modes() method instead of this - modes *types.Modes - // TODO: use helperCommon's .Mutexes() method instead of this - mutexes *types.Mutexes + c *helpers.HelperCommon + helpers *helpers.Helpers } func NewControllerCommon( c *helpers.HelperCommon, - os *oscommands.OSCommand, - git *commands.GitCommand, helpers *helpers.Helpers, - model *types.Model, - contexts *context.ContextTree, - modes *types.Modes, - mutexes *types.Mutexes, ) *controllerCommon { return &controllerCommon{ - c: c, - os: os, - git: git, - helpers: helpers, - model: model, - contexts: contexts, - modes: modes, - mutexes: mutexes, + c: c, + helpers: helpers, } } diff --git a/pkg/gui/controllers/confirmation_controller.go b/pkg/gui/controllers/confirmation_controller.go index 8b0d159da..09496f721 100644 --- a/pkg/gui/controllers/confirmation_controller.go +++ b/pkg/gui/controllers/confirmation_controller.go @@ -38,8 +38,8 @@ func (self *ConfirmationController) GetKeybindings(opts types.KeybindingsOpts) [ { Key: opts.GetKey(opts.Config.Universal.TogglePanel), Handler: func() error { - if len(self.contexts.Suggestions.State.Suggestions) > 0 { - return self.c.ReplaceContext(self.contexts.Suggestions) + if len(self.c.Contexts().Suggestions.State.Suggestions) > 0 { + return self.c.ReplaceContext(self.c.Contexts().Suggestions) } return nil }, @@ -61,5 +61,5 @@ func (self *ConfirmationController) Context() types.Context { } func (self *ConfirmationController) context() *context.ConfirmationContext { - return self.contexts.Confirmation + return self.c.Contexts().Confirmation } diff --git a/pkg/gui/controllers/context_lines_controller.go b/pkg/gui/controllers/context_lines_controller.go index 5a4fb291b..913b763d0 100644 --- a/pkg/gui/controllers/context_lines_controller.go +++ b/pkg/gui/controllers/context_lines_controller.go @@ -101,7 +101,7 @@ func (self *ContextLinesController) applyChange() error { } func (self *ContextLinesController) checkCanChangeContext() error { - if self.git.Patch.PatchBuilder.Active() { + if self.c.Git().Patch.PatchBuilder.Active() { return errors.New(self.c.Tr.CantChangeContextSizeError) } diff --git a/pkg/gui/controllers/files_controller.go b/pkg/gui/controllers/files_controller.go index 4d3740b77..7d040704a 100644 --- a/pkg/gui/controllers/files_controller.go +++ b/pkg/gui/controllers/files_controller.go @@ -208,7 +208,7 @@ func (self *FilesController) GetOnRenderToMain() func() error { split := self.c.UserConfig.Gui.SplitDiff == "always" || (node.GetHasUnstagedChanges() && node.GetHasStagedChanges()) mainShowsStaged := !split && node.GetHasStagedChanges() - cmdObj := self.git.WorkingTree.WorktreeFileDiffCmdObj(node, false, mainShowsStaged, self.c.State().GetIgnoreWhitespaceInDiffView()) + cmdObj := self.c.Git().WorkingTree.WorktreeFileDiffCmdObj(node, false, mainShowsStaged, self.c.State().GetIgnoreWhitespaceInDiffView()) title := self.c.Tr.UnstagedChanges if mainShowsStaged { title = self.c.Tr.StagedChanges @@ -222,7 +222,7 @@ func (self *FilesController) GetOnRenderToMain() func() error { } if split { - cmdObj := self.git.WorkingTree.WorktreeFileDiffCmdObj(node, false, true, self.c.State().GetIgnoreWhitespaceInDiffView()) + cmdObj := self.c.Git().WorkingTree.WorktreeFileDiffCmdObj(node, false, true, self.c.State().GetIgnoreWhitespaceInDiffView()) title := self.c.Tr.StagedChanges if mainShowsStaged { @@ -295,7 +295,7 @@ func (self *FilesController) optimisticChange(node *filetree.FileNode, optimisti rerender := false err := node.ForEachFile(func(f *models.File) error { // can't act on the file itself: we need to update the original model file - for _, modelFile := range self.model.Files { + for _, modelFile := range self.c.Model().Files { if modelFile.Name == f.Name { if optimisticChangeFn(modelFile) { rerender = true @@ -310,7 +310,7 @@ func (self *FilesController) optimisticChange(node *filetree.FileNode, optimisti return err } if rerender { - if err := self.c.PostRefreshUpdate(self.contexts.Files); err != nil { + if err := self.c.PostRefreshUpdate(self.c.Contexts().Files); err != nil { return err } } @@ -321,8 +321,8 @@ func (self *FilesController) optimisticChange(node *filetree.FileNode, optimisti func (self *FilesController) pressWithLock(node *filetree.FileNode) error { // Obtaining this lock because optimistic rendering requires us to mutate // the files in our model. - self.mutexes.RefreshingFilesMutex.Lock() - defer self.mutexes.RefreshingFilesMutex.Unlock() + self.c.Mutexes().RefreshingFilesMutex.Lock() + defer self.c.Mutexes().RefreshingFilesMutex.Unlock() if node.IsFile() { file := node.File @@ -334,7 +334,7 @@ func (self *FilesController) pressWithLock(node *filetree.FileNode) error { return err } - if err := self.git.WorkingTree.StageFile(file.Name); err != nil { + if err := self.c.Git().WorkingTree.StageFile(file.Name); err != nil { return self.c.Error(err) } } else { @@ -344,7 +344,7 @@ func (self *FilesController) pressWithLock(node *filetree.FileNode) error { return err } - if err := self.git.WorkingTree.UnStageFile(file.Names(), file.Tracked); err != nil { + if err := self.c.Git().WorkingTree.UnStageFile(file.Names(), file.Tracked); err != nil { return self.c.Error(err) } } @@ -362,7 +362,7 @@ func (self *FilesController) pressWithLock(node *filetree.FileNode) error { return err } - if err := self.git.WorkingTree.StageFile(node.Path); err != nil { + if err := self.c.Git().WorkingTree.StageFile(node.Path); err != nil { return self.c.Error(err) } } else { @@ -373,7 +373,7 @@ func (self *FilesController) pressWithLock(node *filetree.FileNode) error { } // pretty sure it doesn't matter that we're always passing true here - if err := self.git.WorkingTree.UnStageFile([]string{node.Path}, true); err != nil { + if err := self.c.Git().WorkingTree.UnStageFile([]string{node.Path}, true); err != nil { return self.c.Error(err) } } @@ -414,7 +414,7 @@ func (self *FilesController) Context() types.Context { } func (self *FilesController) context() *context.WorkingTreeContext { - return self.contexts.Files + return self.c.Contexts().Files } func (self *FilesController) getSelectedFile() *models.File { @@ -441,7 +441,7 @@ func (self *FilesController) EnterFile(opts types.OnFocusOpts) error { file := node.File - submoduleConfigs := self.model.Submodules + submoduleConfigs := self.c.Model().Submodules if file.IsSubmodule(submoduleConfigs) { submoduleConfig := file.SubmoduleConfig(submoduleConfigs) return self.helpers.Repos.EnterSubmodule(submoduleConfig) @@ -454,7 +454,7 @@ func (self *FilesController) EnterFile(opts types.OnFocusOpts) error { return self.c.ErrorMsg(self.c.Tr.FileStagingRequirements) } - return self.c.PushContext(self.contexts.Staging, opts) + return self.c.PushContext(self.c.Contexts().Staging, opts) } func (self *FilesController) toggleStagedAll() error { @@ -470,8 +470,8 @@ func (self *FilesController) toggleStagedAll() error { } func (self *FilesController) toggleStagedAllWithLock() error { - self.mutexes.RefreshingFilesMutex.Lock() - defer self.mutexes.RefreshingFilesMutex.Unlock() + self.c.Mutexes().RefreshingFilesMutex.Lock() + defer self.c.Mutexes().RefreshingFilesMutex.Unlock() root := self.context().FileTreeViewModel.GetRoot() @@ -488,7 +488,7 @@ func (self *FilesController) toggleStagedAllWithLock() error { return err } - if err := self.git.WorkingTree.StageAll(); err != nil { + if err := self.c.Git().WorkingTree.StageAll(); err != nil { return self.c.Error(err) } } else { @@ -498,7 +498,7 @@ func (self *FilesController) toggleStagedAllWithLock() error { return err } - if err := self.git.WorkingTree.UnstageAll(); err != nil { + if err := self.c.Git().WorkingTree.UnstageAll(); err != nil { return self.c.Error(err) } } @@ -509,7 +509,7 @@ func (self *FilesController) toggleStagedAllWithLock() error { func (self *FilesController) unstageFiles(node *filetree.FileNode) error { return node.ForEachFile(func(file *models.File) error { if file.HasStagedChanges { - if err := self.git.WorkingTree.UnStageFile(file.Names(), file.Tracked); err != nil { + if err := self.c.Git().WorkingTree.UnStageFile(file.Names(), file.Tracked); err != nil { return err } } @@ -525,7 +525,7 @@ func (self *FilesController) ignoreOrExcludeTracked(node *filetree.FileNode, trA return err } - if err := self.git.WorkingTree.RemoveTrackedFiles(node.GetPath()); err != nil { + if err := self.c.Git().WorkingTree.RemoveTrackedFiles(node.GetPath()); err != nil { return err } @@ -563,7 +563,7 @@ func (self *FilesController) ignore(node *filetree.FileNode) error { if node.GetPath() == ".gitignore" { return self.c.ErrorMsg(self.c.Tr.Actions.IgnoreFileErr) } - err := self.ignoreOrExcludeFile(node, self.c.Tr.IgnoreTracked, self.c.Tr.IgnoreTrackedPrompt, self.c.Tr.Actions.LcIgnoreExcludeFile, self.git.WorkingTree.Ignore) + err := self.ignoreOrExcludeFile(node, self.c.Tr.IgnoreTracked, self.c.Tr.IgnoreTrackedPrompt, self.c.Tr.Actions.LcIgnoreExcludeFile, self.c.Git().WorkingTree.Ignore) if err != nil { return err } @@ -580,7 +580,7 @@ func (self *FilesController) exclude(node *filetree.FileNode) error { return self.c.ErrorMsg(self.c.Tr.Actions.ExcludeGitIgnoreErr) } - err := self.ignoreOrExcludeFile(node, self.c.Tr.ExcludeTracked, self.c.Tr.ExcludeTrackedPrompt, self.c.Tr.Actions.ExcludeFile, self.git.WorkingTree.Exclude) + err := self.ignoreOrExcludeFile(node, self.c.Tr.ExcludeTracked, self.c.Tr.ExcludeTrackedPrompt, self.c.Tr.Actions.ExcludeFile, self.c.Git().WorkingTree.Exclude) if err != nil { return err } @@ -620,7 +620,7 @@ func (self *FilesController) refresh() error { } func (self *FilesController) handleAmendCommitPress() error { - if len(self.model.Files) == 0 { + if len(self.c.Model().Files) == 0 { return self.c.ErrorMsg(self.c.Tr.NoFilesStagedTitle) } @@ -628,7 +628,7 @@ func (self *FilesController) handleAmendCommitPress() error { return self.helpers.WorkingTree.PromptToStageAllAndRetry(self.handleAmendCommitPress) } - if len(self.model.Commits) == 0 { + if len(self.c.Model().Commits) == 0 { return self.c.ErrorMsg(self.c.Tr.NoCommitToAmend) } @@ -702,7 +702,7 @@ func (self *FilesController) createStashMenu() error { if !self.helpers.WorkingTree.IsWorkingTreeDirty() { return self.c.ErrorMsg(self.c.Tr.NoFilesToStash) } - return self.handleStashSave(self.git.Stash.Save, self.c.Tr.Actions.StashAllChanges) + return self.handleStashSave(self.c.Git().Stash.Save, self.c.Tr.Actions.StashAllChanges) }, Key: 'a', }, @@ -713,14 +713,14 @@ func (self *FilesController) createStashMenu() error { return self.c.ErrorMsg(self.c.Tr.NoFilesToStash) } // if there are no staged files it behaves the same as Stash.Save - return self.handleStashSave(self.git.Stash.StashAndKeepIndex, self.c.Tr.Actions.StashAllChangesKeepIndex) + return self.handleStashSave(self.c.Git().Stash.StashAndKeepIndex, self.c.Tr.Actions.StashAllChangesKeepIndex) }, Key: 'i', }, { Label: self.c.Tr.LcStashIncludeUntrackedChanges, OnPress: func() error { - return self.handleStashSave(self.git.Stash.StashIncludeUntrackedChanges, self.c.Tr.Actions.StashIncludeUntrackedChanges) + return self.handleStashSave(self.c.Git().Stash.StashIncludeUntrackedChanges, self.c.Tr.Actions.StashIncludeUntrackedChanges) }, Key: 'U', }, @@ -731,7 +731,7 @@ func (self *FilesController) createStashMenu() error { if !self.helpers.WorkingTree.AnyStagedFiles() { return self.c.ErrorMsg(self.c.Tr.NoTrackedStagedFilesStash) } - return self.handleStashSave(self.git.Stash.SaveStagedChanges, self.c.Tr.Actions.StashStagedChanges) + return self.handleStashSave(self.c.Git().Stash.SaveStagedChanges, self.c.Tr.Actions.StashStagedChanges) }, Key: 's', }, @@ -742,10 +742,10 @@ func (self *FilesController) createStashMenu() error { return self.c.ErrorMsg(self.c.Tr.NoFilesToStash) } if self.helpers.WorkingTree.AnyStagedFiles() { - return self.handleStashSave(self.git.Stash.StashUnstagedChanges, self.c.Tr.Actions.StashUnstagedChanges) + return self.handleStashSave(self.c.Git().Stash.StashUnstagedChanges, self.c.Tr.Actions.StashUnstagedChanges) } // ordinary stash - return self.handleStashSave(self.git.Stash.Save, self.c.Tr.Actions.StashUnstagedChanges) + return self.handleStashSave(self.c.Git().Stash.Save, self.c.Tr.Actions.StashUnstagedChanges) }, Key: 'u', }, @@ -754,7 +754,7 @@ func (self *FilesController) createStashMenu() error { } func (self *FilesController) stash() error { - return self.handleStashSave(self.git.Stash.Save, self.c.Tr.Actions.StashAllChanges) + return self.handleStashSave(self.c.Git().Stash.Save, self.c.Tr.Actions.StashAllChanges) } func (self *FilesController) createResetToUpstreamMenu() error { @@ -769,7 +769,7 @@ func (self *FilesController) handleToggleDirCollapsed() error { self.context().FileTreeViewModel.ToggleCollapsed(node.GetPath()) - if err := self.c.PostRefreshUpdate(self.contexts.Files); err != nil { + if err := self.c.PostRefreshUpdate(self.c.Contexts().Files); err != nil { self.c.Log.Error(err) } @@ -815,7 +815,7 @@ func (self *FilesController) fetch() error { func (self *FilesController) fetchAux() (err error) { self.c.LogAction("Fetch") - err = self.git.Sync.Fetch(git_commands.FetchOptions{}) + err = self.c.Git().Sync.Fetch(git_commands.FetchOptions{}) if err != nil && strings.Contains(err.Error(), "exit status 128") { _ = self.c.ErrorMsg(self.c.Tr.PassUnameWrong) diff --git a/pkg/gui/controllers/files_remove_controller.go b/pkg/gui/controllers/files_remove_controller.go index 646118550..17d673e15 100644 --- a/pkg/gui/controllers/files_remove_controller.go +++ b/pkg/gui/controllers/files_remove_controller.go @@ -47,7 +47,7 @@ func (self *FilesRemoveController) remove(node *filetree.FileNode) error { Label: self.c.Tr.LcDiscardAllChanges, OnPress: func() error { self.c.LogAction(self.c.Tr.Actions.DiscardAllChangesInDirectory) - if err := self.git.WorkingTree.DiscardAllDirChanges(node); err != nil { + if err := self.c.Git().WorkingTree.DiscardAllDirChanges(node); err != nil { return self.c.Error(err) } return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.FILES}}) @@ -67,7 +67,7 @@ func (self *FilesRemoveController) remove(node *filetree.FileNode) error { Label: self.c.Tr.LcDiscardUnstagedChanges, OnPress: func() error { self.c.LogAction(self.c.Tr.Actions.DiscardUnstagedChangesInDirectory) - if err := self.git.WorkingTree.DiscardUnstagedDirChanges(node); err != nil { + if err := self.c.Git().WorkingTree.DiscardUnstagedDirChanges(node); err != nil { return self.c.Error(err) } @@ -85,7 +85,7 @@ func (self *FilesRemoveController) remove(node *filetree.FileNode) error { } else { file := node.File - submodules := self.model.Submodules + submodules := self.c.Model().Submodules if file.IsSubmodule(submodules) { submodule := file.SubmoduleConfig(submodules) @@ -103,7 +103,7 @@ func (self *FilesRemoveController) remove(node *filetree.FileNode) error { Label: self.c.Tr.LcDiscardAllChanges, OnPress: func() error { self.c.LogAction(self.c.Tr.Actions.DiscardAllChangesInFile) - if err := self.git.WorkingTree.DiscardAllFileChanges(file); err != nil { + if err := self.c.Git().WorkingTree.DiscardAllFileChanges(file); err != nil { return self.c.Error(err) } return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.FILES}}) @@ -123,7 +123,7 @@ func (self *FilesRemoveController) remove(node *filetree.FileNode) error { Label: self.c.Tr.LcDiscardUnstagedChanges, OnPress: func() error { self.c.LogAction(self.c.Tr.Actions.DiscardAllUnstagedChangesInFile) - if err := self.git.WorkingTree.DiscardUnstagedFileChanges(file); err != nil { + if err := self.c.Git().WorkingTree.DiscardUnstagedFileChanges(file); err != nil { return self.c.Error(err) } @@ -150,15 +150,15 @@ func (self *FilesRemoveController) ResetSubmodule(submodule *models.SubmoduleCon file := self.helpers.WorkingTree.FileForSubmodule(submodule) if file != nil { - if err := self.git.WorkingTree.UnStageFile(file.Names(), file.Tracked); err != nil { + if err := self.c.Git().WorkingTree.UnStageFile(file.Names(), file.Tracked); err != nil { return self.c.Error(err) } } - if err := self.git.Submodule.Stash(submodule); err != nil { + if err := self.c.Git().Submodule.Stash(submodule); err != nil { return self.c.Error(err) } - if err := self.git.Submodule.Reset(submodule); err != nil { + if err := self.c.Git().Submodule.Reset(submodule); err != nil { return self.c.Error(err) } @@ -182,5 +182,5 @@ func (self *FilesRemoveController) Context() types.Context { } func (self *FilesRemoveController) context() *context.WorkingTreeContext { - return self.contexts.Files + return self.c.Contexts().Files } diff --git a/pkg/gui/controllers/git_flow_controller.go b/pkg/gui/controllers/git_flow_controller.go index 2504ad2dd..6456f38bc 100644 --- a/pkg/gui/controllers/git_flow_controller.go +++ b/pkg/gui/controllers/git_flow_controller.go @@ -39,7 +39,7 @@ func (self *GitFlowController) GetKeybindings(opts types.KeybindingsOpts) []*typ } func (self *GitFlowController) handleCreateGitFlowMenu(branch *models.Branch) error { - if !self.git.Flow.GitFlowEnabled() { + if !self.c.Git().Flow.GitFlowEnabled() { return self.c.ErrorMsg("You need to install git-flow and enable it in this repo to use git-flow features") } @@ -52,7 +52,7 @@ func (self *GitFlowController) handleCreateGitFlowMenu(branch *models.Branch) er HandleConfirm: func(name string) error { self.c.LogAction(self.c.Tr.Actions.GitFlowStart) return self.c.RunSubprocessAndRefresh( - self.git.Flow.StartCmdObj(branchType, name), + self.c.Git().Flow.StartCmdObj(branchType, name), ) }, }) @@ -94,7 +94,7 @@ func (self *GitFlowController) handleCreateGitFlowMenu(branch *models.Branch) er } func (self *GitFlowController) gitFlowFinishBranch(branchName string) error { - cmdObj, err := self.git.Flow.FinishCmdObj(branchName) + cmdObj, err := self.c.Git().Flow.FinishCmdObj(branchName) if err != nil { return self.c.Error(err) } @@ -119,5 +119,5 @@ func (self *GitFlowController) Context() types.Context { } func (self *GitFlowController) context() *context.BranchesContext { - return self.contexts.Branches + return self.c.Contexts().Branches } diff --git a/pkg/gui/controllers/global_controller.go b/pkg/gui/controllers/global_controller.go index dac1bbc08..db6645ade 100644 --- a/pkg/gui/controllers/global_controller.go +++ b/pkg/gui/controllers/global_controller.go @@ -53,7 +53,7 @@ func (self *GlobalController) customCommand() error { self.c.LogAction(self.c.Tr.Actions.CustomCommand) return self.c.RunSubprocessAndRefresh( - self.os.Cmd.NewShell(command), + self.c.OS().Cmd.NewShell(command), ) }, }) diff --git a/pkg/gui/controllers/local_commits_controller.go b/pkg/gui/controllers/local_commits_controller.go index 85c1ff494..561b4b136 100644 --- a/pkg/gui/controllers/local_commits_controller.go +++ b/pkg/gui/controllers/local_commits_controller.go @@ -199,7 +199,7 @@ func secondaryPatchPanelUpdateOpts(c *helpers.HelperCommon) *types.ViewUpdateOpt } func (self *LocalCommitsController) squashDown(commit *models.Commit) error { - if self.context().GetSelectedLineIdx() >= len(self.model.Commits)-1 { + if self.context().GetSelectedLineIdx() >= len(self.c.Model().Commits)-1 { return self.c.ErrorMsg(self.c.Tr.CannotSquashOrFixupFirstCommit) } @@ -224,7 +224,7 @@ func (self *LocalCommitsController) squashDown(commit *models.Commit) error { } func (self *LocalCommitsController) fixup(commit *models.Commit) error { - if self.context().GetSelectedLineIdx() >= len(self.model.Commits)-1 { + if self.context().GetSelectedLineIdx() >= len(self.c.Model().Commits)-1 { return self.c.ErrorMsg(self.c.Tr.CannotSquashOrFixupFirstCommit) } @@ -257,7 +257,7 @@ func (self *LocalCommitsController) reword(commit *models.Commit) error { return nil } - message, err := self.git.Commit.GetCommitMessage(commit.Sha) + message, err := self.c.Git().Commit.GetCommitMessage(commit.Sha) if err != nil { return self.c.Error(err) } @@ -268,7 +268,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.c.Git().Rebase.RewordCommit(self.c.Model().Commits, self.context().GetSelectedLineIdx(), response); err != nil { return self.c.Error(err) } @@ -281,11 +281,11 @@ func (self *LocalCommitsController) doRewordEditor() error { self.c.LogAction(self.c.Tr.Actions.RewordCommit) if self.isHeadCommit() { - return self.c.RunSubprocessAndRefresh(self.os.Cmd.New("git commit --allow-empty --amend --only")) + return self.c.RunSubprocessAndRefresh(self.c.OS().Cmd.New("git commit --allow-empty --amend --only")) } - subProcess, err := self.git.Rebase.RewordCommitInEditor( - self.model.Commits, self.context().GetSelectedLineIdx(), + subProcess, err := self.c.Git().Rebase.RewordCommitInEditor( + self.c.Model().Commits, self.context().GetSelectedLineIdx(), ) if err != nil { return self.c.Error(err) @@ -349,7 +349,7 @@ func (self *LocalCommitsController) edit(commit *models.Commit) error { return self.c.WithWaitingStatus(self.c.Tr.RebasingStatus, func() error { self.c.LogAction(self.c.Tr.Actions.EditCommit) - err := self.git.Rebase.InteractiveRebaseBreakAfter(self.model.Commits, self.context().GetSelectedLineIdx()) + err := self.c.Git().Rebase.InteractiveRebaseBreakAfter(self.c.Model().Commits, self.context().GetSelectedLineIdx()) return self.helpers.MergeAndRebase.CheckMergeOrRebase(err) }) } @@ -369,7 +369,7 @@ func (self *LocalCommitsController) pick(commit *models.Commit) error { } func (self *LocalCommitsController) interactiveRebase(action string) error { - err := self.git.Rebase.InteractiveRebase(self.model.Commits, self.context().GetSelectedLineIdx(), action) + err := self.c.Git().Rebase.InteractiveRebase(self.c.Model().Commits, self.context().GetSelectedLineIdx(), action) return self.helpers.MergeAndRebase.CheckMergeOrRebase(err) } @@ -378,7 +378,7 @@ func (self *LocalCommitsController) interactiveRebase(action string) error { // begin a rebase. It then updates the todo file with that action func (self *LocalCommitsController) handleMidRebaseCommand(action todo.TodoCommand, commit *models.Commit) (bool, error) { if !commit.IsTODO() { - if self.git.Status.WorkingTreeState() != enums.REBASE_MODE_NONE { + if self.c.Git().Status.WorkingTreeState() != enums.REBASE_MODE_NONE { // If we are in a rebase, the only action that is allowed for // non-todo commits is rewording the current head commit if !(action == todo.Reword && self.isHeadCommit()) { @@ -407,7 +407,7 @@ func (self *LocalCommitsController) handleMidRebaseCommand(action todo.TodoComma false, ) - if err := self.git.Rebase.EditRebaseTodo(commit, action); err != nil { + if err := self.c.Git().Rebase.EditRebaseTodo(commit, action); err != nil { return false, self.c.Error(err) } @@ -418,7 +418,7 @@ func (self *LocalCommitsController) handleMidRebaseCommand(action todo.TodoComma func (self *LocalCommitsController) moveDown(commit *models.Commit) error { index := self.context().GetSelectedLineIdx() - commits := self.model.Commits + commits := self.c.Model().Commits // can't move past the initial commit if index >= len(commits)-1 { @@ -435,7 +435,7 @@ func (self *LocalCommitsController) moveDown(commit *models.Commit) error { self.c.LogAction(self.c.Tr.Actions.MoveCommitDown) self.c.LogCommand(fmt.Sprintf("Moving commit %s down", commit.ShortSha()), false) - if err := self.git.Rebase.MoveTodoDown(commit); err != nil { + if err := self.c.Git().Rebase.MoveTodoDown(commit); err != nil { return self.c.Error(err) } self.context().MoveSelectedLine(1) @@ -444,13 +444,13 @@ func (self *LocalCommitsController) moveDown(commit *models.Commit) error { }) } - if self.git.Status.WorkingTreeState() != enums.REBASE_MODE_NONE { + if self.c.Git().Status.WorkingTreeState() != enums.REBASE_MODE_NONE { return self.c.ErrorMsg(self.c.Tr.AlreadyRebasing) } return self.c.WithWaitingStatus(self.c.Tr.MovingStatus, func() error { self.c.LogAction(self.c.Tr.Actions.MoveCommitDown) - err := self.git.Rebase.MoveCommitDown(self.model.Commits, index) + err := self.c.Git().Rebase.MoveCommitDown(self.c.Model().Commits, index) if err == nil { self.context().MoveSelectedLine(1) } @@ -473,7 +473,7 @@ func (self *LocalCommitsController) moveUp(commit *models.Commit) error { false, ) - if err := self.git.Rebase.MoveTodoUp(self.model.Commits[index]); err != nil { + if err := self.c.Git().Rebase.MoveTodoUp(self.c.Model().Commits[index]); err != nil { return self.c.Error(err) } self.context().MoveSelectedLine(-1) @@ -482,13 +482,13 @@ func (self *LocalCommitsController) moveUp(commit *models.Commit) error { }) } - if self.git.Status.WorkingTreeState() != enums.REBASE_MODE_NONE { + if self.c.Git().Status.WorkingTreeState() != enums.REBASE_MODE_NONE { return self.c.ErrorMsg(self.c.Tr.AlreadyRebasing) } return self.c.WithWaitingStatus(self.c.Tr.MovingStatus, func() error { self.c.LogAction(self.c.Tr.Actions.MoveCommitUp) - err := self.git.Rebase.MoveCommitDown(self.model.Commits, index-1) + err := self.c.Git().Rebase.MoveCommitDown(self.c.Model().Commits, index-1) if err == nil { self.context().MoveSelectedLine(-1) } @@ -504,7 +504,7 @@ func (self *LocalCommitsController) amendTo(commit *models.Commit) error { return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}) } - if self.git.Status.WorkingTreeState() != enums.REBASE_MODE_NONE { + if self.c.Git().Status.WorkingTreeState() != enums.REBASE_MODE_NONE { return self.c.ErrorMsg(self.c.Tr.AlreadyRebasing) } @@ -514,7 +514,7 @@ func (self *LocalCommitsController) amendTo(commit *models.Commit) 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(commit) + err := self.c.Git().Rebase.AmendTo(commit) return self.helpers.MergeAndRebase.CheckMergeOrRebase(err) }) }, @@ -548,7 +548,7 @@ func (self *LocalCommitsController) amendAttribute(commit *models.Commit) error func (self *LocalCommitsController) resetAuthor() error { return self.c.WithWaitingStatus(self.c.Tr.AmendingStatus, func() error { self.c.LogAction(self.c.Tr.Actions.ResetCommitAuthor) - if err := self.git.Rebase.ResetCommitAuthor(self.model.Commits, self.context().GetSelectedLineIdx()); err != nil { + if err := self.c.Git().Rebase.ResetCommitAuthor(self.c.Model().Commits, self.context().GetSelectedLineIdx()); err != nil { return self.c.Error(err) } @@ -563,7 +563,7 @@ func (self *LocalCommitsController) setAuthor() error { HandleConfirm: func(value string) error { return self.c.WithWaitingStatus(self.c.Tr.AmendingStatus, func() error { self.c.LogAction(self.c.Tr.Actions.SetCommitAuthor) - if err := self.git.Rebase.SetCommitAuthor(self.model.Commits, self.context().GetSelectedLineIdx(), value); err != nil { + if err := self.c.Git().Rebase.SetCommitAuthor(self.c.Model().Commits, self.context().GetSelectedLineIdx(), value); err != nil { return self.c.Error(err) } @@ -586,7 +586,7 @@ func (self *LocalCommitsController) revert(commit *models.Commit) error { }), HandleConfirm: func() error { self.c.LogAction(self.c.Tr.Actions.RevertCommit) - if err := self.git.Commit.Revert(commit.Sha); err != nil { + if err := self.c.Git().Commit.Revert(commit.Sha); err != nil { return self.c.Error(err) } return self.afterRevertCommit() @@ -599,7 +599,7 @@ func (self *LocalCommitsController) createRevertMergeCommitMenu(commit *models.C menuItems := make([]*types.MenuItem, len(commit.Parents)) for i, parentSha := range commit.Parents { i := i - message, err := self.git.Commit.GetCommitMessageFirstLine(parentSha) + message, err := self.c.Git().Commit.GetCommitMessageFirstLine(parentSha) if err != nil { return self.c.Error(err) } @@ -609,7 +609,7 @@ func (self *LocalCommitsController) createRevertMergeCommitMenu(commit *models.C OnPress: func() error { parentNumber := i + 1 self.c.LogAction(self.c.Tr.Actions.RevertCommit) - if err := self.git.Commit.RevertMerge(commit.Sha, parentNumber); err != nil { + if err := self.c.Git().Commit.RevertMerge(commit.Sha, parentNumber); err != nil { return self.c.Error(err) } return self.afterRevertCommit() @@ -640,7 +640,7 @@ func (self *LocalCommitsController) createFixupCommit(commit *models.Commit) err Prompt: prompt, HandleConfirm: func() error { self.c.LogAction(self.c.Tr.Actions.CreateFixupCommit) - if err := self.git.Commit.CreateFixupCommit(commit.Sha); err != nil { + if err := self.c.Git().Commit.CreateFixupCommit(commit.Sha); err != nil { return self.c.Error(err) } @@ -661,7 +661,7 @@ func (self *LocalCommitsController) squashAllAboveFixupCommits(commit *models.Co HandleConfirm: func() error { return self.c.WithWaitingStatus(self.c.Tr.SquashingStatus, func() error { self.c.LogAction(self.c.Tr.Actions.SquashAllAboveFixupCommits) - err := self.git.Rebase.SquashAllAboveFixupCommits(commit) + err := self.c.Git().Rebase.SquashAllAboveFixupCommits(commit) return self.helpers.MergeAndRebase.CheckMergeOrRebase(err) }) }, @@ -822,7 +822,7 @@ func (self *LocalCommitsController) Context() types.Context { } func (self *LocalCommitsController) context() *context.LocalCommitsContext { - return self.contexts.LocalCommits + return self.c.Contexts().LocalCommits } func (self *LocalCommitsController) paste() error { @@ -830,7 +830,7 @@ func (self *LocalCommitsController) paste() error { } func (self *LocalCommitsController) isHeadCommit() bool { - return models.IsHeadCommit(self.model.Commits, self.context().GetSelectedLineIdx()) + return models.IsHeadCommit(self.c.Model().Commits, self.context().GetSelectedLineIdx()) } func isChangeOfRebaseTodoAllowed(action todo.TodoCommand) bool { diff --git a/pkg/gui/controllers/menu_controller.go b/pkg/gui/controllers/menu_controller.go index b51d9ebc0..f641b9083 100644 --- a/pkg/gui/controllers/menu_controller.go +++ b/pkg/gui/controllers/menu_controller.go @@ -69,5 +69,5 @@ func (self *MenuController) Context() types.Context { } func (self *MenuController) context() *context.MenuContext { - return self.contexts.Menu + return self.c.Contexts().Menu } diff --git a/pkg/gui/controllers/merge_conflicts_controller.go b/pkg/gui/controllers/merge_conflicts_controller.go index 226ad8756..fa5fa7e12 100644 --- a/pkg/gui/controllers/merge_conflicts_controller.go +++ b/pkg/gui/controllers/merge_conflicts_controller.go @@ -178,7 +178,7 @@ func (self *MergeConflictsController) Context() types.Context { } func (self *MergeConflictsController) context() *context.MergeConflictsContext { - return self.contexts.MergeConflicts + return self.c.Contexts().MergeConflicts } func (self *MergeConflictsController) Escape() error { diff --git a/pkg/gui/controllers/patch_building_controller.go b/pkg/gui/controllers/patch_building_controller.go index 8fb29e8b4..2c1728db2 100644 --- a/pkg/gui/controllers/patch_building_controller.go +++ b/pkg/gui/controllers/patch_building_controller.go @@ -48,11 +48,11 @@ func (self *PatchBuildingController) GetKeybindings(opts types.KeybindingsOpts) } func (self *PatchBuildingController) Context() types.Context { - return self.contexts.CustomPatchBuilder + return self.c.Contexts().CustomPatchBuilder } func (self *PatchBuildingController) context() types.IPatchExplorerContext { - return self.contexts.CustomPatchBuilder + return self.c.Contexts().CustomPatchBuilder } func (self *PatchBuildingController) GetMouseKeybindings(opts types.KeybindingsOpts) []*gocui.ViewMouseBinding { @@ -72,8 +72,8 @@ func (self *PatchBuildingController) GetOnFocusLost() func(types.OnFocusLostOpts return func(opts types.OnFocusLostOpts) error { self.c.Views().PatchBuilding.Wrap = true - if self.git.Patch.PatchBuilder.IsEmpty() { - self.git.Patch.PatchBuilder.Reset() + if self.c.Git().Patch.PatchBuilder.IsEmpty() { + self.c.Git().Patch.PatchBuilder.Reset() } return nil @@ -84,7 +84,7 @@ func (self *PatchBuildingController) OpenFile() error { self.context().GetMutex().Lock() defer self.context().GetMutex().Unlock() - path := self.contexts.CommitFiles.GetSelectedPath() + path := self.c.Contexts().CommitFiles.GetSelectedPath() if path == "" { return nil @@ -97,7 +97,7 @@ func (self *PatchBuildingController) EditFile() error { self.context().GetMutex().Lock() defer self.context().GetMutex().Unlock() - path := self.contexts.CommitFiles.GetSelectedPath() + path := self.c.Contexts().CommitFiles.GetSelectedPath() if path == "" { return nil @@ -121,21 +121,21 @@ func (self *PatchBuildingController) toggleSelection() error { self.context().GetMutex().Lock() defer self.context().GetMutex().Unlock() - toggleFunc := self.git.Patch.PatchBuilder.AddFileLineRange - filename := self.contexts.CommitFiles.GetSelectedPath() + toggleFunc := self.c.Git().Patch.PatchBuilder.AddFileLineRange + filename := self.c.Contexts().CommitFiles.GetSelectedPath() if filename == "" { return nil } state := self.context().GetState() - includedLineIndices, err := self.git.Patch.PatchBuilder.GetFileIncLineIndices(filename) + includedLineIndices, err := self.c.Git().Patch.PatchBuilder.GetFileIncLineIndices(filename) if err != nil { return err } currentLineIsStaged := lo.Contains(includedLineIndices, state.GetSelectedLineIdx()) if currentLineIsStaged { - toggleFunc = self.git.Patch.PatchBuilder.RemoveFileLineRange + toggleFunc = self.c.Git().Patch.PatchBuilder.RemoveFileLineRange } // add range of lines to those set for the file diff --git a/pkg/gui/controllers/patch_explorer_controller.go b/pkg/gui/controllers/patch_explorer_controller.go index dac63a7b1..bcb90a796 100644 --- a/pkg/gui/controllers/patch_explorer_controller.go +++ b/pkg/gui/controllers/patch_explorer_controller.go @@ -254,7 +254,7 @@ func (self *PatchExplorerController) CopySelectedToClipboard() error { selected := self.context.GetState().PlainRenderSelected() self.c.LogAction(self.c.Tr.Actions.CopySelectedTextToClipboard) - if err := self.os.CopyToClipboard(selected); err != nil { + if err := self.c.OS().CopyToClipboard(selected); err != nil { return self.c.Error(err) } diff --git a/pkg/gui/controllers/reflog_commits_controller.go b/pkg/gui/controllers/reflog_commits_controller.go index 44cc50ab9..ddc34a263 100644 --- a/pkg/gui/controllers/reflog_commits_controller.go +++ b/pkg/gui/controllers/reflog_commits_controller.go @@ -8,30 +8,31 @@ import ( type ReflogCommitsController struct { baseController *controllerCommon - context *context.ReflogCommitsContext } var _ types.IController = &ReflogCommitsController{} func NewReflogCommitsController( common *controllerCommon, - context *context.ReflogCommitsContext, ) *ReflogCommitsController { return &ReflogCommitsController{ baseController: baseController{}, controllerCommon: common, - context: context, } } func (self *ReflogCommitsController) Context() types.Context { - return self.context + return self.context() +} + +func (self *ReflogCommitsController) context() *context.ReflogCommitsContext { + return self.c.Contexts().ReflogCommits } func (self *ReflogCommitsController) GetOnRenderToMain() func() error { return func() error { return self.helpers.Diff.WithDiffModeCheck(func() error { - commit := self.context.GetSelected() + commit := self.context().GetSelected() var task types.UpdateTask if commit == nil { task = types.NewRenderStringTask("No reflog history") diff --git a/pkg/gui/controllers/remote_branches_controller.go b/pkg/gui/controllers/remote_branches_controller.go index 0f4efbbff..91ff8bd7b 100644 --- a/pkg/gui/controllers/remote_branches_controller.go +++ b/pkg/gui/controllers/remote_branches_controller.go @@ -81,7 +81,7 @@ func (self *RemoteBranchesController) GetOnRenderToMain() func() error { if remoteBranch == nil { task = types.NewRenderStringTask("No branches for this remote") } else { - cmdObj := self.git.Branch.GetGraphCmdObj(remoteBranch.FullRefName()) + cmdObj := self.c.Git().Branch.GetGraphCmdObj(remoteBranch.FullRefName()) task = types.NewRunCommandTask(cmdObj.GetCmd()) } @@ -101,7 +101,7 @@ func (self *RemoteBranchesController) Context() types.Context { } func (self *RemoteBranchesController) context() *context.RemoteBranchesContext { - return self.contexts.RemoteBranches + return self.c.Contexts().RemoteBranches } func (self *RemoteBranchesController) checkSelected(callback func(*models.RemoteBranch) error) func() error { @@ -116,7 +116,7 @@ func (self *RemoteBranchesController) checkSelected(callback func(*models.Remote } func (self *RemoteBranchesController) escape() error { - return self.c.PushContext(self.contexts.Remotes) + return self.c.PushContext(self.c.Contexts().Remotes) } func (self *RemoteBranchesController) delete(selectedBranch *models.RemoteBranch) error { @@ -128,7 +128,7 @@ func (self *RemoteBranchesController) delete(selectedBranch *models.RemoteBranch HandleConfirm: func() error { return self.c.WithWaitingStatus(self.c.Tr.DeletingStatus, func() error { self.c.LogAction(self.c.Tr.Actions.DeleteRemoteBranch) - err := self.git.Remote.DeleteRemoteBranch(selectedBranch.RemoteName, selectedBranch.Name) + err := self.c.Git().Remote.DeleteRemoteBranch(selectedBranch.RemoteName, selectedBranch.Name) if err != nil { _ = self.c.Error(err) } @@ -167,7 +167,7 @@ func (self *RemoteBranchesController) setAsUpstream(selectedBranch *models.Remot Prompt: message, HandleConfirm: func() error { self.c.LogAction(self.c.Tr.Actions.SetBranchUpstream) - if err := self.git.Branch.SetUpstream(selectedBranch.RemoteName, selectedBranch.Name, checkedOutBranch.Name); err != nil { + if err := self.c.Git().Branch.SetUpstream(selectedBranch.RemoteName, selectedBranch.Name, checkedOutBranch.Name); err != nil { return self.c.Error(err) } diff --git a/pkg/gui/controllers/remotes_controller.go b/pkg/gui/controllers/remotes_controller.go index 2562474bf..83f06d5a4 100644 --- a/pkg/gui/controllers/remotes_controller.go +++ b/pkg/gui/controllers/remotes_controller.go @@ -14,7 +14,6 @@ import ( type RemotesController struct { baseController *controllerCommon - context *context.RemotesContext setRemoteBranches func([]*models.RemoteBranch) } @@ -28,7 +27,6 @@ func NewRemotesController( return &RemotesController{ baseController: baseController{}, controllerCommon: common, - context: common.contexts.Remotes, setRemoteBranches: setRemoteBranches, } } @@ -64,11 +62,19 @@ func (self *RemotesController) GetKeybindings(opts types.KeybindingsOpts) []*typ return bindings } +func (self *RemotesController) Context() types.Context { + return self.context() +} + +func (self *RemotesController) context() *context.RemotesContext { + return self.c.Contexts().Remotes +} + func (self *RemotesController) GetOnRenderToMain() func() error { return func() error { return self.helpers.Diff.WithDiffModeCheck(func() error { var task types.UpdateTask - remote := self.context.GetSelected() + remote := self.context().GetSelected() if remote == nil { task = types.NewRenderStringTask("No remotes") } else { @@ -98,14 +104,14 @@ func (self *RemotesController) enter(remote *models.Remote) error { if len(remote.Branches) == 0 { newSelectedLine = -1 } - self.contexts.RemoteBranches.SetSelectedLineIdx(newSelectedLine) - self.contexts.RemoteBranches.SetTitleRef(remote.Name) + self.c.Contexts().RemoteBranches.SetSelectedLineIdx(newSelectedLine) + self.c.Contexts().RemoteBranches.SetTitleRef(remote.Name) - if err := self.c.PostRefreshUpdate(self.contexts.RemoteBranches); err != nil { + if err := self.c.PostRefreshUpdate(self.c.Contexts().RemoteBranches); err != nil { return err } - return self.c.PushContext(self.contexts.RemoteBranches) + return self.c.PushContext(self.c.Contexts().RemoteBranches) } func (self *RemotesController) add() error { @@ -116,7 +122,7 @@ func (self *RemotesController) add() error { Title: self.c.Tr.LcNewRemoteUrl, HandleConfirm: func(remoteUrl string) error { self.c.LogAction(self.c.Tr.Actions.AddRemote) - if err := self.git.Remote.AddRemote(remoteName, remoteUrl); err != nil { + if err := self.c.Git().Remote.AddRemote(remoteName, remoteUrl); err != nil { return err } return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.REMOTES}}) @@ -132,7 +138,7 @@ func (self *RemotesController) remove(remote *models.Remote) error { Prompt: self.c.Tr.LcRemoveRemotePrompt + " '" + remote.Name + "'?", HandleConfirm: func() error { self.c.LogAction(self.c.Tr.Actions.RemoveRemote) - if err := self.git.Remote.RemoveRemote(remote.Name); err != nil { + if err := self.c.Git().Remote.RemoveRemote(remote.Name); err != nil { return self.c.Error(err) } @@ -155,7 +161,7 @@ func (self *RemotesController) edit(remote *models.Remote) error { HandleConfirm: func(updatedRemoteName string) error { if updatedRemoteName != remote.Name { self.c.LogAction(self.c.Tr.Actions.UpdateRemote) - if err := self.git.Remote.RenameRemote(remote.Name, updatedRemoteName); err != nil { + if err := self.c.Git().Remote.RenameRemote(remote.Name, updatedRemoteName); err != nil { return self.c.Error(err) } } @@ -178,7 +184,7 @@ func (self *RemotesController) edit(remote *models.Remote) error { InitialContent: url, HandleConfirm: func(updatedRemoteUrl string) error { self.c.LogAction(self.c.Tr.Actions.UpdateRemote) - if err := self.git.Remote.UpdateRemoteUrl(updatedRemoteName, updatedRemoteUrl); err != nil { + if err := self.c.Git().Remote.UpdateRemoteUrl(updatedRemoteName, updatedRemoteUrl); err != nil { return self.c.Error(err) } return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.BRANCHES, types.REMOTES}}) @@ -190,7 +196,7 @@ func (self *RemotesController) edit(remote *models.Remote) error { func (self *RemotesController) fetch(remote *models.Remote) error { return self.c.WithWaitingStatus(self.c.Tr.FetchingRemoteStatus, func() error { - err := self.git.Sync.FetchRemote(remote.Name) + err := self.c.Git().Sync.FetchRemote(remote.Name) if err != nil { _ = self.c.Error(err) } @@ -201,7 +207,7 @@ func (self *RemotesController) fetch(remote *models.Remote) error { func (self *RemotesController) checkSelected(callback func(*models.Remote) error) func() error { return func() error { - file := self.context.GetSelected() + file := self.context().GetSelected() if file == nil { return nil } @@ -209,7 +215,3 @@ func (self *RemotesController) checkSelected(callback func(*models.Remote) error return callback(file) } } - -func (self *RemotesController) Context() types.Context { - return self.context -} diff --git a/pkg/gui/controllers/snake_controller.go b/pkg/gui/controllers/snake_controller.go index 9524666dc..f73962d5e 100644 --- a/pkg/gui/controllers/snake_controller.go +++ b/pkg/gui/controllers/snake_controller.go @@ -49,7 +49,7 @@ func (self *SnakeController) GetKeybindings(opts types.KeybindingsOpts) []*types } func (self *SnakeController) Context() types.Context { - return self.contexts.Snake + return self.c.Contexts().Snake } func (self *SnakeController) GetOnFocus() func(types.OnFocusOpts) error { @@ -62,7 +62,7 @@ func (self *SnakeController) GetOnFocus() func(types.OnFocusOpts) error { func (self *SnakeController) GetOnFocusLost() func(types.OnFocusLostOpts) error { return func(types.OnFocusLostOpts) error { self.helpers.Snake.ExitGame() - self.helpers.Window.MoveToTopOfWindow(self.contexts.Submodules) + self.helpers.Window.MoveToTopOfWindow(self.c.Contexts().Submodules) return nil } } @@ -75,5 +75,5 @@ func (self *SnakeController) SetDirection(direction snake.Direction) func() erro } func (self *SnakeController) Escape() error { - return self.c.PushContext(self.contexts.Submodules) + return self.c.PushContext(self.c.Contexts().Submodules) } diff --git a/pkg/gui/controllers/staging_controller.go b/pkg/gui/controllers/staging_controller.go index c6fb187ab..cefaf28a5 100644 --- a/pkg/gui/controllers/staging_controller.go +++ b/pkg/gui/controllers/staging_controller.go @@ -115,8 +115,8 @@ func (self *StagingController) GetOnFocusLost() func(types.OnFocusLostOpts) erro if opts.NewContextKey != self.otherContext.GetKey() { self.c.Views().Staging.Wrap = true self.c.Views().StagingSecondary.Wrap = true - _ = self.contexts.Staging.Render(false) - _ = self.contexts.StagingSecondary.Render(false) + _ = self.c.Contexts().Staging.Render(false) + _ = self.c.Contexts().StagingSecondary.Render(false) } return nil } @@ -221,7 +221,7 @@ func (self *StagingController) applySelection(reverse bool) error { applyFlags = append(applyFlags, "cached") } self.c.LogAction(self.c.Tr.Actions.ApplyPatch) - err := self.git.WorkingTree.ApplyPatch(patchToApply, applyFlags...) + err := self.c.Git().WorkingTree.ApplyPatch(patchToApply, applyFlags...) if err != nil { return self.c.Error(err) } @@ -262,7 +262,7 @@ func (self *StagingController) editHunk() error { }). FormatPlain() - patchFilepath, err := self.git.WorkingTree.SaveTemporaryPatch(patchText) + patchFilepath, err := self.c.Git().WorkingTree.SaveTemporaryPatch(patchText) if err != nil { return err } @@ -273,7 +273,7 @@ func (self *StagingController) editHunk() error { return err } - editedPatchText, err := self.git.File.Cat(patchFilepath) + editedPatchText, err := self.c.Git().File.Cat(patchFilepath) if err != nil { return err } @@ -293,7 +293,7 @@ func (self *StagingController) editHunk() error { if self.staged { applyFlags = append(applyFlags, "reverse") } - if err := self.git.WorkingTree.ApplyPatch(newPatchText, applyFlags...); err != nil { + if err := self.c.Git().WorkingTree.ApplyPatch(newPatchText, applyFlags...); err != nil { return self.c.Error(err) } @@ -301,5 +301,5 @@ func (self *StagingController) editHunk() error { } func (self *StagingController) FilePath() string { - return self.contexts.Files.GetSelectedPath() + return self.c.Contexts().Files.GetSelectedPath() } diff --git a/pkg/gui/controllers/stash_controller.go b/pkg/gui/controllers/stash_controller.go index 8eabfcc39..377b029c3 100644 --- a/pkg/gui/controllers/stash_controller.go +++ b/pkg/gui/controllers/stash_controller.go @@ -63,7 +63,7 @@ func (self *StashController) GetOnRenderToMain() func() error { if stashEntry == nil { task = types.NewRenderStringTask(self.c.Tr.NoStashEntries) } else { - task = types.NewRunPtyTask(self.git.Stash.ShowStashEntryCmdObj(stashEntry.Index).GetCmd()) + task = types.NewRunPtyTask(self.c.Git().Stash.ShowStashEntryCmdObj(stashEntry.Index).GetCmd()) } return self.c.RenderToMainViews(types.RefreshMainOpts{ @@ -93,13 +93,13 @@ func (self *StashController) Context() types.Context { } func (self *StashController) context() *context.StashContext { - return self.contexts.Stash + return self.c.Contexts().Stash } func (self *StashController) handleStashApply(stashEntry *models.StashEntry) error { apply := func() error { self.c.LogAction(self.c.Tr.Actions.Stash) - err := self.git.Stash.Apply(stashEntry.Index) + err := self.c.Git().Stash.Apply(stashEntry.Index) _ = self.postStashRefresh() if err != nil { return self.c.Error(err) @@ -123,7 +123,7 @@ func (self *StashController) handleStashApply(stashEntry *models.StashEntry) err func (self *StashController) handleStashPop(stashEntry *models.StashEntry) error { pop := func() error { self.c.LogAction(self.c.Tr.Actions.Stash) - err := self.git.Stash.Pop(stashEntry.Index) + err := self.c.Git().Stash.Pop(stashEntry.Index) _ = self.postStashRefresh() if err != nil { return self.c.Error(err) @@ -150,7 +150,7 @@ func (self *StashController) handleStashDrop(stashEntry *models.StashEntry) erro Prompt: self.c.Tr.SureDropStashEntry, HandleConfirm: func() error { self.c.LogAction(self.c.Tr.Actions.Stash) - err := self.git.Stash.Drop(stashEntry.Index) + err := self.c.Git().Stash.Drop(stashEntry.Index) _ = self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.STASH}}) if err != nil { return self.c.Error(err) @@ -181,7 +181,7 @@ func (self *StashController) handleRenameStashEntry(stashEntry *models.StashEntr InitialContent: stashEntry.Name, HandleConfirm: func(response string) error { self.c.LogAction(self.c.Tr.Actions.RenameStash) - err := self.git.Stash.Rename(stashEntry.Index, response) + err := self.c.Git().Stash.Rename(stashEntry.Index, response) _ = self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.STASH}}) if err != nil { return err diff --git a/pkg/gui/controllers/status_controller.go b/pkg/gui/controllers/status_controller.go index f89f7e16f..a347fd9d4 100644 --- a/pkg/gui/controllers/status_controller.go +++ b/pkg/gui/controllers/status_controller.go @@ -91,7 +91,7 @@ func (self *StatusController) GetOnClick() func() error { } func (self *StatusController) Context() types.Context { - return self.contexts.Status + return self.c.Contexts().Status } func (self *StatusController) onClick() error { @@ -109,7 +109,7 @@ func (self *StatusController) onClick() error { cx, _ := self.c.Views().Status.Cursor() upstreamStatus := presentation.BranchStatus(currentBranch, self.c.Tr) repoName := utils.GetCurrentRepoName() - workingTreeState := self.git.Status.WorkingTreeState() + workingTreeState := self.c.Git().Status.WorkingTreeState() switch workingTreeState { case enums.REBASE_MODE_REBASING, enums.REBASE_MODE_MERGING: workingTreeStatus := fmt.Sprintf("(%s)", presentation.FormatWorkingTreeState(workingTreeState)) @@ -181,7 +181,7 @@ func (self *StatusController) editConfig() error { } func (self *StatusController) showAllBranchLogs() error { - cmdObj := self.git.Branch.AllBranchesLogCmdObj() + cmdObj := self.c.Git().Branch.AllBranchesLogCmdObj() task := types.NewRunPtyTask(cmdObj.GetCmd()) return self.c.RenderToMainViews(types.RefreshMainOpts{ diff --git a/pkg/gui/controllers/sub_commits_controller.go b/pkg/gui/controllers/sub_commits_controller.go index c8c7a7d1d..33f967830 100644 --- a/pkg/gui/controllers/sub_commits_controller.go +++ b/pkg/gui/controllers/sub_commits_controller.go @@ -9,35 +9,36 @@ import ( type SubCommitsController struct { baseController *controllerCommon - context *context.SubCommitsContext } var _ types.IController = &SubCommitsController{} func NewSubCommitsController( common *controllerCommon, - context *context.SubCommitsContext, ) *SubCommitsController { return &SubCommitsController{ baseController: baseController{}, controllerCommon: common, - context: context, } } func (self *SubCommitsController) Context() types.Context { - return self.context + return self.context() +} + +func (self *SubCommitsController) context() *context.SubCommitsContext { + return self.c.Contexts().SubCommits } func (self *SubCommitsController) GetOnRenderToMain() func() error { return func() error { return self.helpers.Diff.WithDiffModeCheck(func() error { - commit := self.context.GetSelected() + commit := self.context().GetSelected() var task types.UpdateTask if commit == nil { task = types.NewRenderStringTask("No commits") } else { - cmdObj := self.git.Commit.ShowCmdObj(commit.Sha, self.modes.Filtering.GetPath(), self.c.State().GetIgnoreWhitespaceInDiffView()) + cmdObj := self.c.Git().Commit.ShowCmdObj(commit.Sha, self.c.Modes().Filtering.GetPath(), self.c.State().GetIgnoreWhitespaceInDiffView()) task = types.NewRunPtyTask(cmdObj.GetCmd()) } @@ -55,7 +56,7 @@ func (self *SubCommitsController) GetOnRenderToMain() func() error { func (self *SubCommitsController) GetOnFocus() func(types.OnFocusOpts) error { return func(types.OnFocusOpts) error { - context := self.context + context := self.context() if context.GetSelectedLineIdx() > COMMIT_THRESHOLD && context.GetLimitCommits() { context.SetLimitCommits(false) go utils.Safe(func() { diff --git a/pkg/gui/controllers/submodules_controller.go b/pkg/gui/controllers/submodules_controller.go index 745c17b36..8f76355f8 100644 --- a/pkg/gui/controllers/submodules_controller.go +++ b/pkg/gui/controllers/submodules_controller.go @@ -96,7 +96,7 @@ func (self *SubmodulesController) GetOnRenderToMain() func() error { if file == nil { task = types.NewRenderStringTask(prefix) } else { - cmdObj := self.git.WorkingTree.WorktreeFileDiffCmdObj(file, false, !file.HasUnstagedChanges && file.HasStagedChanges, self.c.State().GetIgnoreWhitespaceInDiffView()) + cmdObj := self.c.Git().WorkingTree.WorktreeFileDiffCmdObj(file, false, !file.HasUnstagedChanges && file.HasStagedChanges, self.c.State().GetIgnoreWhitespaceInDiffView()) task = types.NewRunCommandTaskWithPrefix(cmdObj.GetCmd(), prefix) } } @@ -132,7 +132,7 @@ func (self *SubmodulesController) add() error { HandleConfirm: func(submodulePath string) error { return self.c.WithWaitingStatus(self.c.Tr.LcAddingSubmoduleStatus, func() error { self.c.LogAction(self.c.Tr.Actions.AddSubmodule) - err := self.git.Submodule.Add(submoduleName, submodulePath, submoduleUrl) + err := self.c.Git().Submodule.Add(submoduleName, submodulePath, submoduleUrl) if err != nil { _ = self.c.Error(err) } @@ -154,7 +154,7 @@ func (self *SubmodulesController) editURL(submodule *models.SubmoduleConfig) err HandleConfirm: func(newUrl string) error { return self.c.WithWaitingStatus(self.c.Tr.LcUpdatingSubmoduleUrlStatus, func() error { self.c.LogAction(self.c.Tr.Actions.UpdateSubmoduleUrl) - err := self.git.Submodule.UpdateUrl(submodule.Name, submodule.Path, newUrl) + err := self.c.Git().Submodule.UpdateUrl(submodule.Name, submodule.Path, newUrl) if err != nil { _ = self.c.Error(err) } @@ -168,7 +168,7 @@ func (self *SubmodulesController) editURL(submodule *models.SubmoduleConfig) err func (self *SubmodulesController) init(submodule *models.SubmoduleConfig) error { return self.c.WithWaitingStatus(self.c.Tr.LcInitializingSubmoduleStatus, func() error { self.c.LogAction(self.c.Tr.Actions.InitialiseSubmodule) - err := self.git.Submodule.Init(submodule.Path) + err := self.c.Git().Submodule.Init(submodule.Path) if err != nil { _ = self.c.Error(err) } @@ -182,11 +182,11 @@ func (self *SubmodulesController) openBulkActionsMenu() error { Title: self.c.Tr.LcBulkSubmoduleOptions, Items: []*types.MenuItem{ { - LabelColumns: []string{self.c.Tr.LcBulkInitSubmodules, style.FgGreen.Sprint(self.git.Submodule.BulkInitCmdObj().ToString())}, + LabelColumns: []string{self.c.Tr.LcBulkInitSubmodules, style.FgGreen.Sprint(self.c.Git().Submodule.BulkInitCmdObj().ToString())}, OnPress: func() error { return self.c.WithWaitingStatus(self.c.Tr.LcRunningCommand, func() error { self.c.LogAction(self.c.Tr.Actions.BulkInitialiseSubmodules) - err := self.git.Submodule.BulkInitCmdObj().Run() + err := self.c.Git().Submodule.BulkInitCmdObj().Run() if err != nil { return self.c.Error(err) } @@ -197,11 +197,11 @@ func (self *SubmodulesController) openBulkActionsMenu() error { Key: 'i', }, { - LabelColumns: []string{self.c.Tr.LcBulkUpdateSubmodules, style.FgYellow.Sprint(self.git.Submodule.BulkUpdateCmdObj().ToString())}, + LabelColumns: []string{self.c.Tr.LcBulkUpdateSubmodules, style.FgYellow.Sprint(self.c.Git().Submodule.BulkUpdateCmdObj().ToString())}, OnPress: func() error { return self.c.WithWaitingStatus(self.c.Tr.LcRunningCommand, func() error { self.c.LogAction(self.c.Tr.Actions.BulkUpdateSubmodules) - if err := self.git.Submodule.BulkUpdateCmdObj().Run(); err != nil { + if err := self.c.Git().Submodule.BulkUpdateCmdObj().Run(); err != nil { return self.c.Error(err) } @@ -211,11 +211,11 @@ func (self *SubmodulesController) openBulkActionsMenu() error { Key: 'u', }, { - LabelColumns: []string{self.c.Tr.LcBulkDeinitSubmodules, style.FgRed.Sprint(self.git.Submodule.BulkDeinitCmdObj().ToString())}, + LabelColumns: []string{self.c.Tr.LcBulkDeinitSubmodules, style.FgRed.Sprint(self.c.Git().Submodule.BulkDeinitCmdObj().ToString())}, OnPress: func() error { return self.c.WithWaitingStatus(self.c.Tr.LcRunningCommand, func() error { self.c.LogAction(self.c.Tr.Actions.BulkDeinitialiseSubmodules) - if err := self.git.Submodule.BulkDeinitCmdObj().Run(); err != nil { + if err := self.c.Git().Submodule.BulkDeinitCmdObj().Run(); err != nil { return self.c.Error(err) } @@ -231,7 +231,7 @@ func (self *SubmodulesController) openBulkActionsMenu() error { func (self *SubmodulesController) update(submodule *models.SubmoduleConfig) error { return self.c.WithWaitingStatus(self.c.Tr.LcUpdatingSubmoduleStatus, func() error { self.c.LogAction(self.c.Tr.Actions.UpdateSubmodule) - err := self.git.Submodule.Update(submodule.Path) + err := self.c.Git().Submodule.Update(submodule.Path) if err != nil { _ = self.c.Error(err) } @@ -246,7 +246,7 @@ func (self *SubmodulesController) remove(submodule *models.SubmoduleConfig) erro Prompt: fmt.Sprintf(self.c.Tr.RemoveSubmodulePrompt, submodule.Name), HandleConfirm: func() error { self.c.LogAction(self.c.Tr.Actions.RemoveSubmodule) - if err := self.git.Submodule.Delete(submodule); err != nil { + if err := self.c.Git().Submodule.Delete(submodule); err != nil { return self.c.Error(err) } @@ -256,7 +256,7 @@ func (self *SubmodulesController) remove(submodule *models.SubmoduleConfig) erro } func (self *SubmodulesController) easterEgg() error { - return self.c.PushContext(self.contexts.Snake) + return self.c.PushContext(self.c.Contexts().Snake) } func (self *SubmodulesController) checkSelected(callback func(*models.SubmoduleConfig) error) func() error { @@ -275,5 +275,5 @@ func (self *SubmodulesController) Context() types.Context { } func (self *SubmodulesController) context() *context.SubmodulesContext { - return self.contexts.Submodules + return self.c.Contexts().Submodules } diff --git a/pkg/gui/controllers/suggestions_controller.go b/pkg/gui/controllers/suggestions_controller.go index ca8a488a7..5772e35b6 100644 --- a/pkg/gui/controllers/suggestions_controller.go +++ b/pkg/gui/controllers/suggestions_controller.go @@ -33,7 +33,7 @@ func (self *SuggestionsController) GetKeybindings(opts types.KeybindingsOpts) [] }, { Key: opts.GetKey(opts.Config.Universal.TogglePanel), - Handler: func() error { return self.c.ReplaceContext(self.contexts.Confirmation) }, + Handler: func() error { return self.c.ReplaceContext(self.c.Contexts().Confirmation) }, }, } @@ -52,5 +52,5 @@ func (self *SuggestionsController) Context() types.Context { } func (self *SuggestionsController) context() *context.SuggestionsContext { - return self.contexts.Suggestions + return self.c.Contexts().Suggestions } diff --git a/pkg/gui/controllers/switch_to_sub_commits_controller.go b/pkg/gui/controllers/switch_to_sub_commits_controller.go index 2e9d25e09..28966c68f 100644 --- a/pkg/gui/controllers/switch_to_sub_commits_controller.go +++ b/pkg/gui/controllers/switch_to_sub_commits_controller.go @@ -57,10 +57,10 @@ func (self *SwitchToSubCommitsController) viewCommits() error { } // need to populate my sub commits - commits, err := self.git.Loaders.CommitLoader.GetCommits( + commits, err := self.c.Git().Loaders.CommitLoader.GetCommits( git_commands.GetCommitsOptions{ Limit: true, - FilterPath: self.modes.Filtering.GetPath(), + FilterPath: self.c.Modes().Filtering.GetPath(), IncludeRebaseCommits: false, RefName: ref.FullRefName(), }, @@ -71,19 +71,19 @@ func (self *SwitchToSubCommitsController) viewCommits() error { self.setSubCommits(commits) - self.contexts.SubCommits.SetSelectedLineIdx(0) - self.contexts.SubCommits.SetParentContext(self.context) - self.contexts.SubCommits.SetWindowName(self.context.GetWindowName()) - self.contexts.SubCommits.SetTitleRef(ref.Description()) - self.contexts.SubCommits.SetRef(ref) - self.contexts.SubCommits.SetLimitCommits(true) + self.c.Contexts().SubCommits.SetSelectedLineIdx(0) + self.c.Contexts().SubCommits.SetParentContext(self.context) + self.c.Contexts().SubCommits.SetWindowName(self.context.GetWindowName()) + self.c.Contexts().SubCommits.SetTitleRef(ref.Description()) + self.c.Contexts().SubCommits.SetRef(ref) + self.c.Contexts().SubCommits.SetLimitCommits(true) - err = self.c.PostRefreshUpdate(self.contexts.SubCommits) + err = self.c.PostRefreshUpdate(self.c.Contexts().SubCommits) if err != nil { return err } - return self.c.PushContext(self.contexts.SubCommits) + return self.c.PushContext(self.c.Contexts().SubCommits) } func (self *SwitchToSubCommitsController) Context() types.Context { diff --git a/pkg/gui/controllers/sync_controller.go b/pkg/gui/controllers/sync_controller.go index 5add485c4..916266ec0 100644 --- a/pkg/gui/controllers/sync_controller.go +++ b/pkg/gui/controllers/sync_controller.go @@ -76,7 +76,7 @@ func (self *SyncController) push(currentBranch *models.Branch) error { return self.pushAux(opts) } } else { - if self.git.Config.GetPushToCurrent() { + if self.c.Git().Config.GetPushToCurrent() { return self.pushAux(pushOpts{setUpstream: true}) } else { return self.helpers.Upstream.PromptForUpstreamWithInitialContent(currentBranch, func(upstream string) error { @@ -118,7 +118,7 @@ func (self *SyncController) setCurrentBranchUpstream(upstream string) error { return err } - if err := self.git.Branch.SetCurrentBranchUpstream(upstreamRemote, upstreamBranch); err != nil { + if err := self.c.Git().Branch.SetCurrentBranchUpstream(upstreamRemote, upstreamBranch); err != nil { if strings.Contains(err.Error(), "does not exist") { return fmt.Errorf( "upstream branch %s/%s not found.\nIf you expect it to exist, you should fetch (with 'f').\nOtherwise, you should push (with 'shift+P')", @@ -146,7 +146,7 @@ func (self *SyncController) PullAux(opts PullFilesOptions) error { func (self *SyncController) pullWithLock(opts PullFilesOptions) error { self.c.LogAction(opts.Action) - err := self.git.Sync.Pull( + err := self.c.Git().Sync.Pull( git_commands.PullOptions{ RemoteName: opts.UpstreamRemote, BranchName: opts.UpstreamBranch, @@ -167,7 +167,7 @@ type pushOpts struct { func (self *SyncController) pushAux(opts pushOpts) error { return self.c.WithLoaderPanel(self.c.Tr.PushWait, func() error { self.c.LogAction(self.c.Tr.Actions.Push) - err := self.git.Sync.Push(git_commands.PushOpts{ + err := self.c.Git().Sync.Push(git_commands.PushOpts{ Force: opts.force, UpstreamRemote: opts.upstreamRemote, UpstreamBranch: opts.upstreamBranch, diff --git a/pkg/gui/controllers/tags_controller.go b/pkg/gui/controllers/tags_controller.go index a25c42f6a..6dd3653f8 100644 --- a/pkg/gui/controllers/tags_controller.go +++ b/pkg/gui/controllers/tags_controller.go @@ -64,7 +64,7 @@ func (self *TagsController) GetOnRenderToMain() func() error { if tag == nil { task = types.NewRenderStringTask("No tags") } else { - cmdObj := self.git.Branch.GetGraphCmdObj(tag.FullRefName()) + cmdObj := self.c.Git().Branch.GetGraphCmdObj(tag.FullRefName()) task = types.NewRunCommandTask(cmdObj.GetCmd()) } @@ -84,7 +84,7 @@ func (self *TagsController) checkout(tag *models.Tag) error { if err := self.helpers.Refs.CheckoutRef(tag.Name, types.CheckoutRefOptions{}); err != nil { return err } - return self.c.PushContext(self.contexts.Branches) + return self.c.PushContext(self.c.Contexts().Branches) } func (self *TagsController) delete(tag *models.Tag) error { @@ -100,7 +100,7 @@ func (self *TagsController) delete(tag *models.Tag) error { Prompt: prompt, HandleConfirm: func() error { self.c.LogAction(self.c.Tr.Actions.DeleteTag) - if err := self.git.Tag.Delete(tag.Name); err != nil { + if err := self.c.Git().Tag.Delete(tag.Name); err != nil { return self.c.Error(err) } return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.COMMITS, types.TAGS}}) @@ -123,7 +123,7 @@ func (self *TagsController) push(tag *models.Tag) error { HandleConfirm: func(response string) error { return self.c.WithWaitingStatus(self.c.Tr.PushingTagStatus, func() error { self.c.LogAction(self.c.Tr.Actions.PushTag) - err := self.git.Tag.Push(response, tag.Name) + err := self.c.Git().Tag.Push(response, tag.Name) if err != nil { _ = self.c.Error(err) } @@ -159,5 +159,5 @@ func (self *TagsController) Context() types.Context { } func (self *TagsController) context() *context.TagsContext { - return self.contexts.Tags + return self.c.Contexts().Tags } diff --git a/pkg/gui/controllers/undo_controller.go b/pkg/gui/controllers/undo_controller.go index 19fc19e27..d1558759c 100644 --- a/pkg/gui/controllers/undo_controller.go +++ b/pkg/gui/controllers/undo_controller.go @@ -76,7 +76,7 @@ func (self *UndoController) reflogUndo() error { undoEnvVars := []string{"GIT_REFLOG_ACTION=[lazygit undo]"} undoingStatus := self.c.Tr.UndoingStatus - if self.git.Status.WorkingTreeState() == enums.REBASE_MODE_REBASING { + if self.c.Git().Status.WorkingTreeState() == enums.REBASE_MODE_REBASING { return self.c.ErrorMsg(self.c.Tr.LcCantUndoWhileRebasing) } @@ -124,7 +124,7 @@ func (self *UndoController) reflogRedo() error { redoEnvVars := []string{"GIT_REFLOG_ACTION=[lazygit redo]"} redoingStatus := self.c.Tr.RedoingStatus - if self.git.Status.WorkingTreeState() == enums.REBASE_MODE_REBASING { + if self.c.Git().Status.WorkingTreeState() == enums.REBASE_MODE_REBASING { return self.c.ErrorMsg(self.c.Tr.LcCantRedoWhileRebasing) } @@ -179,7 +179,7 @@ func (self *UndoController) reflogRedo() error { // Though we might support this later, hence the use of the CURRENT_REBASE action kind. func (self *UndoController) parseReflogForActions(onUserAction func(counter int, action reflogAction) (bool, error)) error { counter := 0 - reflogCommits := self.model.FilteredReflogCommits + reflogCommits := self.c.Model().FilteredReflogCommits rebaseFinishCommitSha := "" var action *reflogAction for reflogCommitIdx, reflogCommit := range reflogCommits { @@ -248,14 +248,14 @@ func (self *UndoController) hardResetWithAutoStash(commitSha string, options har Prompt: self.c.Tr.AutoStashPrompt, HandleConfirm: func() error { return self.c.WithWaitingStatus(options.WaitingStatus, func() error { - if err := self.git.Stash.Save(self.c.Tr.StashPrefix + commitSha); err != nil { + if err := self.c.Git().Stash.Save(self.c.Tr.StashPrefix + commitSha); err != nil { return self.c.Error(err) } if err := reset(); err != nil { return err } - err := self.git.Stash.Pop(0) + err := self.c.Git().Stash.Pop(0) if err := self.c.Refresh(types.RefreshOptions{}); err != nil { return err } diff --git a/pkg/gui/controllers/workspace_reset_controller.go b/pkg/gui/controllers/workspace_reset_controller.go index 825d54214..c6e916683 100644 --- a/pkg/gui/controllers/workspace_reset_controller.go +++ b/pkg/gui/controllers/workspace_reset_controller.go @@ -13,7 +13,7 @@ func (self *FilesController) createResetMenu() error { red := style.FgRed nukeStr := "git reset --hard HEAD && git clean -fd" - if len(self.model.Submodules) > 0 { + if len(self.c.Model().Submodules) > 0 { nukeStr = fmt.Sprintf("%s (%s)", nukeStr, self.c.Tr.LcAndResetSubmodules) } @@ -25,7 +25,7 @@ func (self *FilesController) createResetMenu() error { }, OnPress: func() error { self.c.LogAction(self.c.Tr.Actions.NukeWorkingTree) - if err := self.git.WorkingTree.ResetAndClean(); err != nil { + if err := self.c.Git().WorkingTree.ResetAndClean(); err != nil { return self.c.Error(err) } @@ -41,7 +41,7 @@ func (self *FilesController) createResetMenu() error { }, OnPress: func() error { self.c.LogAction(self.c.Tr.Actions.DiscardUnstagedFileChanges) - if err := self.git.WorkingTree.DiscardAnyUnstagedFileChanges(); err != nil { + if err := self.c.Git().WorkingTree.DiscardAnyUnstagedFileChanges(); err != nil { return self.c.Error(err) } @@ -56,7 +56,7 @@ func (self *FilesController) createResetMenu() error { }, OnPress: func() error { self.c.LogAction(self.c.Tr.Actions.RemoveUntrackedFiles) - if err := self.git.WorkingTree.RemoveUntrackedFiles(); err != nil { + if err := self.c.Git().WorkingTree.RemoveUntrackedFiles(); err != nil { return self.c.Error(err) } @@ -75,10 +75,10 @@ func (self *FilesController) createResetMenu() error { if !self.helpers.WorkingTree.IsWorkingTreeDirty() { return self.c.ErrorMsg(self.c.Tr.NoTrackedStagedFilesStash) } - if err := self.git.Stash.SaveStagedChanges("[lazygit] tmp stash"); err != nil { + if err := self.c.Git().Stash.SaveStagedChanges("[lazygit] tmp stash"); err != nil { return self.c.Error(err) } - if err := self.git.Stash.DropNewest(); err != nil { + if err := self.c.Git().Stash.DropNewest(); err != nil { return self.c.Error(err) } @@ -93,7 +93,7 @@ func (self *FilesController) createResetMenu() error { }, OnPress: func() error { self.c.LogAction(self.c.Tr.Actions.SoftReset) - if err := self.git.WorkingTree.ResetSoft("HEAD"); err != nil { + if err := self.c.Git().WorkingTree.ResetSoft("HEAD"); err != nil { return self.c.Error(err) } @@ -108,7 +108,7 @@ func (self *FilesController) createResetMenu() error { }, OnPress: func() error { self.c.LogAction(self.c.Tr.Actions.MixedReset) - if err := self.git.WorkingTree.ResetMixed("HEAD"); err != nil { + if err := self.c.Git().WorkingTree.ResetMixed("HEAD"); err != nil { return self.c.Error(err) } @@ -123,7 +123,7 @@ func (self *FilesController) createResetMenu() error { }, OnPress: func() error { self.c.LogAction(self.c.Tr.Actions.HardReset) - if err := self.git.WorkingTree.ResetHard("HEAD"); err != nil { + if err := self.c.Git().WorkingTree.ResetHard("HEAD"); err != nil { return self.c.Error(err) }