1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-07-31 14:24:25 +03:00

move helpers into their own struct

This commit is contained in:
Jesse Duffield
2022-01-30 10:40:48 +11:00
parent 2692637fbe
commit f97de692e3
16 changed files with 111 additions and 79 deletions

View File

@ -68,6 +68,15 @@ func NewContextManager(initialContext types.Context) ContextManager {
}
}
type Helpers struct {
refs *RefsHelper
bisect *controllers.BisectHelper
suggestions *SuggestionsHelper
files *FilesHelper
workingTree *WorkingTreeHelper
tags *controllers.TagsHelper
}
type Repo string
// Gui wraps the gocui Gui object which handles rendering and events
@ -143,12 +152,6 @@ type Gui struct {
PrevLayout PrevLayout
c *types.ControllerCommon
refsHelper *RefsHelper
suggestionsHelper *SuggestionsHelper
filesHelper *FilesHelper
workingTreeHelper *WorkingTreeHelper
// this is the initial dir we are in upon opening lazygit. We hold onto this
// in case we want to restore it before quitting for users who have set up
// the feature for changing directory upon quit.
@ -156,6 +159,9 @@ type Gui struct {
// is because some users want to keep track of the current lazygit directory in an outside
// process
InitialDir string
c *types.ControllerCommon
helpers *Helpers
}
// we keep track of some stuff from one render to the next to see if certain
@ -571,23 +577,24 @@ func (gui *Gui) setControllers() {
getState := func() *GuiRepoState { return gui.State }
getContexts := func() context.ContextTree { return gui.State.Contexts }
// TODO: have a getGit function too
refsHelper := NewRefsHelper(
controllerCommon,
gui.git,
getState,
)
gui.refsHelper = refsHelper
gui.suggestionsHelper = NewSuggestionsHelper(controllerCommon, getState, gui.refreshSuggestions)
gui.filesHelper = NewFilesHelper(controllerCommon, gui.git, osCommand)
gui.workingTreeHelper = NewWorkingTreeHelper(func() *filetree.FileTreeViewModel { return gui.State.FileTreeViewModel })
tagsHelper := controllers.NewTagsHelper(controllerCommon, gui.git)
gui.helpers = &Helpers{
refs: NewRefsHelper(
controllerCommon,
gui.git,
getState,
),
bisect: controllers.NewBisectHelper(controllerCommon, gui.git),
suggestions: NewSuggestionsHelper(controllerCommon, getState, gui.refreshSuggestions),
files: NewFilesHelper(controllerCommon, gui.git, osCommand),
workingTree: NewWorkingTreeHelper(func() *filetree.FileTreeViewModel { return gui.State.FileTreeViewModel }),
tags: controllers.NewTagsHelper(controllerCommon, gui.git),
}
syncController := controllers.NewSyncController(
controllerCommon,
gui.git,
gui.getCheckedOutBranch,
gui.suggestionsHelper,
gui.helpers.suggestions,
gui.getSuggestedRemote,
gui.checkMergeOrRebase,
)
@ -616,19 +623,19 @@ func (gui *Gui) setControllers() {
func() []*models.Commit { return gui.State.Commits },
gui.getSelectedPath,
gui.switchToMerge,
gui.suggestionsHelper,
gui.refsHelper,
gui.filesHelper,
gui.workingTreeHelper,
gui.helpers.suggestions,
gui.helpers.refs,
gui.helpers.files,
gui.helpers.workingTree,
),
Tags: controllers.NewTagsController(
controllerCommon,
func() *context.TagsContext { return gui.State.Contexts.Tags },
gui.git,
getContexts,
tagsHelper,
refsHelper,
gui.suggestionsHelper,
gui.helpers.tags,
gui.helpers.refs,
gui.helpers.suggestions,
gui.switchToSubCommitsContext,
),
LocalCommits: controllers.NewLocalCommitsController(
@ -636,8 +643,8 @@ func (gui *Gui) setControllers() {
func() types.IListContext { return gui.State.Contexts.BranchCommits },
osCommand,
gui.git,
tagsHelper,
refsHelper,
gui.helpers.tags,
gui.helpers.refs,
gui.getSelectedLocalCommit,
func() []*models.Commit { return gui.State.Commits },
func() int { return gui.State.Panels.Commits.SelectedLineIdx },
@ -668,14 +675,15 @@ func (gui *Gui) setControllers() {
controllerCommon,
func() types.IListContext { return gui.State.Contexts.BranchCommits },
gui.git,
gui.helpers.bisect,
gui.getSelectedLocalCommit,
func() []*models.Commit { return gui.State.Commits },
),
Undo: controllers.NewUndoController(
controllerCommon,
gui.git,
refsHelper,
gui.workingTreeHelper,
gui.helpers.refs,
gui.helpers.workingTree,
func() []*models.Commit { return gui.State.FilteredReflogCommits },
),
Sync: syncController,