diff options
Diffstat (limited to 'pkg')
-rw-r--r-- | pkg/commands/git.go | 8 | ||||
-rw-r--r-- | pkg/commands/patch_manager.go | 32 | ||||
-rw-r--r-- | pkg/commands/patch_rebases.go | 8 | ||||
-rw-r--r-- | pkg/gui/commit_files_panel.go | 20 | ||||
-rw-r--r-- | pkg/gui/patch_building_panel.go | 4 | ||||
-rw-r--r-- | pkg/gui/patch_options_panel.go | 9 |
6 files changed, 48 insertions, 33 deletions
diff --git a/pkg/commands/git.go b/pkg/commands/git.go index 42c1749af..1448b37cb 100644 --- a/pkg/commands/git.go +++ b/pkg/commands/git.go @@ -109,7 +109,7 @@ func NewGitCommand(log *logrus.Entry, osCommand *OSCommand, tr *i18n.Localizer, return nil, err } - return &GitCommand{ + gitCommand := &GitCommand{ Log: log, OSCommand: osCommand, Tr: tr, @@ -120,7 +120,11 @@ func NewGitCommand(log *logrus.Entry, osCommand *OSCommand, tr *i18n.Localizer, getLocalGitConfig: gitconfig.Local, removeFile: os.RemoveAll, DotGitDir: dotGitDir, - }, nil + } + + gitCommand.PatchManager = NewPatchManager(log, gitCommand.ApplyPatch) + + return gitCommand, nil } func findDotGitDir(stat func(string) (os.FileInfo, error), readFile func(filename string) ([]byte, error)) (string, error) { diff --git a/pkg/commands/patch_manager.go b/pkg/commands/patch_manager.go index 1c747c33d..4abf737a0 100644 --- a/pkg/commands/patch_manager.go +++ b/pkg/commands/patch_manager.go @@ -25,21 +25,23 @@ type PatchManager struct { } // NewPatchManager returns a new PatchModifier -func NewPatchManager(log *logrus.Entry, applyPatch applyPatchFunc, commitSha string, diffMap map[string]string) *PatchManager { - infoMap := map[string]*fileInfo{} +func NewPatchManager(log *logrus.Entry, applyPatch applyPatchFunc) *PatchManager { + return &PatchManager{ + Log: log, + ApplyPatch: applyPatch, + } +} + +// NewPatchManager returns a new PatchModifier +func (p *PatchManager) Start(commitSha string, diffMap map[string]string) { + p.CommitSha = commitSha + p.fileInfoMap = map[string]*fileInfo{} for filename, diff := range diffMap { - infoMap[filename] = &fileInfo{ + p.fileInfoMap[filename] = &fileInfo{ mode: UNSELECTED, diff: diff, } } - - return &PatchManager{ - Log: log, - fileInfoMap: infoMap, - CommitSha: commitSha, - ApplyPatch: applyPatch, - } } func (p *PatchManager) AddFile(filename string) { @@ -200,3 +202,13 @@ func (p *PatchManager) ApplyPatches(reverse bool) error { return nil } + +// clears the patch +func (p *PatchManager) Reset() { + p.CommitSha = "" + p.fileInfoMap = map[string]*fileInfo{} +} + +func (p *PatchManager) IsEmpty() bool { + return p != nil && p.CommitSha == "" || len(p.fileInfoMap) == 0 +} diff --git a/pkg/commands/patch_rebases.go b/pkg/commands/patch_rebases.go index f0dadbc16..19116e071 100644 --- a/pkg/commands/patch_rebases.go +++ b/pkg/commands/patch_rebases.go @@ -22,7 +22,7 @@ func (c *GitCommand) DeletePatchesFromCommit(commits []*Commit, commitIndex int, } c.onSuccessfulContinue = func() error { - c.PatchManager = nil + c.PatchManager.Reset() return nil } @@ -50,7 +50,7 @@ func (c *GitCommand) MovePatchToSelectedCommit(commits []*Commit, sourceCommitId } c.onSuccessfulContinue = func() error { - c.PatchManager = nil + c.PatchManager.Reset() return nil } @@ -121,7 +121,7 @@ func (c *GitCommand) MovePatchToSelectedCommit(commits []*Commit, sourceCommitId } c.onSuccessfulContinue = func() error { - c.PatchManager = nil + c.PatchManager.Reset() return nil } @@ -161,7 +161,7 @@ func (c *GitCommand) PullPatchIntoIndex(commits []*Commit, commitIdx int, p *Pat return err } - c.PatchManager = nil + c.PatchManager.Reset() return nil } diff --git a/pkg/gui/commit_files_panel.go b/pkg/gui/commit_files_panel.go index 0141e25b8..c0cab24cb 100644 --- a/pkg/gui/commit_files_panel.go +++ b/pkg/gui/commit_files_panel.go @@ -136,8 +136,8 @@ func (gui *Gui) handleToggleFileForPatch(g *gocui.Gui, v *gocui.View) error { } toggleTheFile := func() error { - if gui.GitCommand.PatchManager == nil { - if err := gui.createPatchManager(); err != nil { + if gui.GitCommand.PatchManager.IsEmpty() { + if err := gui.startPatchManager(); err != nil { return err } } @@ -147,9 +147,9 @@ func (gui *Gui) handleToggleFileForPatch(g *gocui.Gui, v *gocui.View) error { return gui.refreshCommitFilesView() } - if gui.GitCommand.PatchManager != nil && gui.GitCommand.PatchManager.CommitSha != commitFile.Sha { + if !gui.GitCommand.PatchManager.IsEmpty() && gui.GitCommand.PatchManager.CommitSha != commitFile.Sha { return gui.createConfirmationPanel(g, v, true, gui.Tr.SLocalize("DiscardPatch"), gui.Tr.SLocalize("DiscardPatchConfirm"), func(g *gocui.Gui, v *gocui.View) error { - gui.GitCommand.PatchManager = nil + gui.GitCommand.PatchManager.Reset() return toggleTheFile() }, nil) } @@ -157,7 +157,7 @@ func (gui *Gui) handleToggleFileForPatch(g *gocui.Gui, v *gocui.View) error { return toggleTheFile() } -func (gui *Gui) createPatchManager() error { +func (gui *Gui) startPatchManager() error { diffMap := map[string]string{} for _, commitFile := range gui.State.CommitFiles { commitText, err := gui.GitCommand.ShowCommitFile(commitFile.Sha, commitFile.Name, true) @@ -172,7 +172,7 @@ func (gui *Gui) createPatchManager() error { return errors.New("No commit selected") } - gui.GitCommand.PatchManager = commands.NewPatchManager(gui.Log, gui.GitCommand.ApplyPatch, commit.Sha, diffMap) + gui.GitCommand.PatchManager.Start(commit.Sha, diffMap) return nil } @@ -187,8 +187,8 @@ func (gui *Gui) handleEnterCommitFile(g *gocui.Gui, v *gocui.View) error { } enterTheFile := func() error { - if gui.GitCommand.PatchManager == nil { - if err := gui.createPatchManager(); err != nil { + if gui.GitCommand.PatchManager.IsEmpty() { + if err := gui.startPatchManager(); err != nil { return err } } @@ -202,9 +202,9 @@ func (gui *Gui) handleEnterCommitFile(g *gocui.Gui, v *gocui.View) error { return gui.refreshPatchBuildingPanel() } - if gui.GitCommand.PatchManager != nil && gui.GitCommand.PatchManager.CommitSha != commitFile.Sha { + if !gui.GitCommand.PatchManager.IsEmpty() && gui.GitCommand.PatchManager.CommitSha != commitFile.Sha { return gui.createConfirmationPanel(g, v, false, gui.Tr.SLocalize("DiscardPatch"), gui.Tr.SLocalize("DiscardPatchConfirm"), func(g *gocui.Gui, v *gocui.View) error { - gui.GitCommand.PatchManager = nil + gui.GitCommand.PatchManager.Reset() return enterTheFile() }, nil) } diff --git a/pkg/gui/patch_building_panel.go b/pkg/gui/patch_building_panel.go index b32253557..26196f6d1 100644 --- a/pkg/gui/patch_building_panel.go +++ b/pkg/gui/patch_building_panel.go @@ -5,7 +5,7 @@ import ( ) func (gui *Gui) refreshPatchBuildingPanel() error { - if gui.GitCommand.PatchManager == nil { + if gui.GitCommand.PatchManager.IsEmpty() { return gui.handleEscapePatchBuildingPanel(gui.g, nil) } @@ -91,7 +91,7 @@ func (gui *Gui) handleEscapePatchBuildingPanel(g *gocui.Gui, v *gocui.View) erro } func (gui *Gui) refreshSecondaryPatchPanel() error { - if gui.GitCommand.PatchManager != nil { + if !gui.GitCommand.PatchManager.IsEmpty() { gui.State.SplitMainPanel = true secondaryView := gui.getSecondaryView() secondaryView.Highlight = true diff --git a/pkg/gui/patch_options_panel.go b/pkg/gui/patch_options_panel.go index a966040e2..748f70365 100644 --- a/pkg/gui/patch_options_panel.go +++ b/pkg/gui/patch_options_panel.go @@ -17,15 +17,14 @@ func (o *patchMenuOption) GetDisplayStrings(isFocused bool) []string { } func (gui *Gui) handleCreatePatchOptionsMenu(g *gocui.Gui, v *gocui.View) error { - m := gui.GitCommand.PatchManager - if m == nil { + if gui.GitCommand.PatchManager.IsEmpty() { return gui.createErrorPanel(gui.g, gui.Tr.SLocalize("NoPatchError")) } options := []*patchMenuOption{ {displayName: fmt.Sprintf("remove patch from original commit (%s)", gui.GitCommand.PatchManager.CommitSha), function: gui.handleDeletePatchFromCommit}, {displayName: "pull patch out into index", function: gui.handlePullPatchIntoWorkingTree}, - {displayName: "reset patch", function: gui.handleClearPatch}, + {displayName: "reset patch", function: gui.handleResetPatch}, } selectedCommit := gui.getSelectedCommit(gui.g) @@ -122,7 +121,7 @@ func (gui *Gui) handlePullPatchIntoWorkingTree() error { }) } -func (gui *Gui) handleClearPatch() error { - gui.GitCommand.PatchManager = nil +func (gui *Gui) handleResetPatch() error { + gui.GitCommand.PatchManager.Reset() return gui.refreshCommitFilesView() } |