diff options
-rw-r--r-- | pkg/gui/files_panel.go | 75 | ||||
-rw-r--r-- | pkg/gui/workspace_reset_options_panel.go | 100 |
2 files changed, 100 insertions, 75 deletions
diff --git a/pkg/gui/files_panel.go b/pkg/gui/files_panel.go index 82a81654c..38622efa1 100644 --- a/pkg/gui/files_panel.go +++ b/pkg/gui/files_panel.go @@ -10,7 +10,6 @@ import ( "fmt" "strings" - "github.com/fatih/color" "github.com/jesseduffield/gocui" "github.com/jesseduffield/lazygit/pkg/commands" "github.com/jesseduffield/lazygit/pkg/utils" @@ -510,22 +509,11 @@ type discardOption struct { description string } -type discardAllOption struct { - handler func() error - description string - command string -} - // GetDisplayStrings is a function. func (r *discardOption) GetDisplayStrings(isFocused bool) []string { return []string{r.description} } -// GetDisplayStrings is a function. -func (r *discardAllOption) GetDisplayStrings(isFocused bool) []string { - return []string{r.description, color.New(color.FgRed).Sprint(r.command)} -} - func (gui *Gui) handleCreateDiscardMenu(g *gocui.Gui, v *gocui.View) error { file, err := gui.getSelectedFile(g) if err != nil { @@ -577,69 +565,6 @@ func (gui *Gui) handleCreateDiscardMenu(g *gocui.Gui, v *gocui.View) error { return gui.createMenu(file.Name, options, len(options), handleMenuPress) } -func (gui *Gui) handleCreateResetMenu(g *gocui.Gui, v *gocui.View) error { - options := []*discardAllOption{ - { - description: gui.Tr.SLocalize("discardAllChangesToAllFiles"), - command: "reset --hard HEAD && git clean -fd", - handler: func() error { - return gui.GitCommand.ResetAndClean() - }, - }, - { - description: gui.Tr.SLocalize("discardAnyUnstagedChanges"), - command: "git checkout -- .", - handler: func() error { - return gui.GitCommand.DiscardAnyUnstagedFileChanges() - }, - }, - { - description: gui.Tr.SLocalize("discardUntrackedFiles"), - command: "git clean -fd", - handler: func() error { - return gui.GitCommand.RemoveUntrackedFiles() - }, - }, - { - description: gui.Tr.SLocalize("softReset"), - command: "git reset --soft HEAD", - handler: func() error { - return gui.GitCommand.ResetSoft("HEAD") - }, - }, - { - description: gui.Tr.SLocalize("hardReset"), - command: "git reset --hard HEAD", - handler: func() error { - return gui.GitCommand.ResetHard("HEAD") - }, - }, - { - description: gui.Tr.SLocalize("hardResetUpstream"), - command: "git reset --hard @{upstream}", - handler: func() error { - return gui.GitCommand.ResetHard("@{upstream}") - }, - }, - { - description: gui.Tr.SLocalize("cancel"), - handler: func() error { - return nil - }, - }, - } - - handleMenuPress := func(index int) error { - if err := options[index].handler(); err != nil { - return gui.createErrorPanel(gui.g, err.Error()) - } - - return gui.refreshFiles() - } - - return gui.createMenu("", options, len(options), handleMenuPress) -} - func (gui *Gui) handleCustomCommand(g *gocui.Gui, v *gocui.View) error { return gui.createPromptPanel(g, v, gui.Tr.SLocalize("CustomCommand"), "", func(g *gocui.Gui, v *gocui.View) error { command := gui.trimmedContent(v) diff --git a/pkg/gui/workspace_reset_options_panel.go b/pkg/gui/workspace_reset_options_panel.go new file mode 100644 index 000000000..0e3cd59c6 --- /dev/null +++ b/pkg/gui/workspace_reset_options_panel.go @@ -0,0 +1,100 @@ +package gui + +import ( + "github.com/fatih/color" + "github.com/jesseduffield/gocui" +) + +type workspaceResetOption struct { + handler func() error + description string + command string +} + +// GetDisplayStrings is a function. +func (r *workspaceResetOption) GetDisplayStrings(isFocused bool) []string { + return []string{r.description, color.New(color.FgRed).Sprint(r.command)} +} + +func (gui *Gui) handleCreateResetMenu(g *gocui.Gui, v *gocui.View) error { + options := []*workspaceResetOption{ + { + description: gui.Tr.SLocalize("discardAllChangesToAllFiles"), + command: "reset --hard HEAD && git clean -fd", + handler: func() error { + if err := gui.GitCommand.ResetAndClean(); err != nil { + return gui.createErrorPanel(gui.g, err.Error()) + } + + return gui.refreshFiles() + }, + }, + { + description: gui.Tr.SLocalize("discardAnyUnstagedChanges"), + command: "git checkout -- .", + handler: func() error { + if err := gui.GitCommand.DiscardAnyUnstagedFileChanges(); err != nil { + return gui.createErrorPanel(gui.g, err.Error()) + } + + return gui.refreshFiles() + }, + }, + { + description: gui.Tr.SLocalize("discardUntrackedFiles"), + command: "git clean -fd", + handler: func() error { + if err := gui.GitCommand.RemoveUntrackedFiles(); err != nil { + return gui.createErrorPanel(gui.g, err.Error()) + } + + return gui.refreshFiles() + }, + }, + { + description: gui.Tr.SLocalize("softReset"), + command: "git reset --soft HEAD", + handler: func() error { + if err := gui.GitCommand.ResetSoft("HEAD"); err != nil { + return gui.createErrorPanel(gui.g, err.Error()) + } + + return gui.refreshFiles() + }, + }, + { + description: gui.Tr.SLocalize("hardReset"), + command: "git reset --hard HEAD", + handler: func() error { + if err := gui.GitCommand.ResetHard("HEAD"); err != nil { + return gui.createErrorPanel(gui.g, err.Error()) + } + + return gui.refreshFiles() + }, + }, + { + description: gui.Tr.SLocalize("hardResetUpstream"), + command: "git reset --hard @{upstream}", + handler: func() error { + if err := gui.GitCommand.ResetHard("@{upstream}"); err != nil { + return gui.createErrorPanel(gui.g, err.Error()) + } + + return gui.refreshSidePanels(gui.g) + }, + }, + { + description: gui.Tr.SLocalize("cancel"), + handler: func() error { + return nil + }, + }, + } + + handleMenuPress := func(index int) error { + return options[index].handler() + } + + return gui.createMenu("", options, len(options), handleMenuPress) +} |