1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-02-09 13:47:11 +02:00

moving more into controllers package

This commit is contained in:
Jesse Duffield 2022-01-30 11:10:00 +11:00
parent b04038d08f
commit e187293456
4 changed files with 91 additions and 95 deletions

View File

@ -141,6 +141,12 @@ func (self *FilesController) Keybindings(getKey func(key string) interface{}, co
Handler: self.checkSelectedFileNode(self.ignore),
Description: self.c.Tr.LcIgnoreFile,
},
{
Key: getKey(config.Universal.Remove),
Handler: self.checkSelectedFileNode(self.remove),
Description: self.c.Tr.LcViewDiscardOptions,
OpensMenu: true,
},
{
Key: getKey(config.Files.RefreshFiles),
Handler: self.refresh,

View File

@ -0,0 +1,85 @@
package controllers
import (
"github.com/jesseduffield/lazygit/pkg/gui/filetree"
"github.com/jesseduffield/lazygit/pkg/gui/types"
)
// splitting this action out into its own file because it's self-contained
func (self *FilesController) remove(node *filetree.FileNode) error {
var menuItems []*types.MenuItem
if node.File == nil {
menuItems = []*types.MenuItem{
{
DisplayString: self.c.Tr.LcDiscardAllChanges,
OnPress: func() error {
self.c.LogAction(self.c.Tr.Actions.DiscardAllChangesInDirectory)
if err := self.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}})
},
},
}
if node.GetHasStagedChanges() && node.GetHasUnstagedChanges() {
menuItems = append(menuItems, &types.MenuItem{
DisplayString: self.c.Tr.LcDiscardUnstagedChanges,
OnPress: func() error {
self.c.LogAction(self.c.Tr.Actions.DiscardUnstagedChangesInDirectory)
if err := self.git.WorkingTree.DiscardUnstagedDirChanges(node); err != nil {
return self.c.Error(err)
}
return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.FILES}})
},
})
}
} else {
file := node.File
submodules := self.getSubmodules()
if file.IsSubmodule(submodules) {
submodule := file.SubmoduleConfig(submodules)
menuItems = []*types.MenuItem{
{
DisplayString: self.c.Tr.LcSubmoduleStashAndReset,
OnPress: func() error {
return self.ResetSubmodule(submodule)
},
},
}
} else {
menuItems = []*types.MenuItem{
{
DisplayString: self.c.Tr.LcDiscardAllChanges,
OnPress: func() error {
self.c.LogAction(self.c.Tr.Actions.DiscardAllChangesInFile)
if err := self.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}})
},
},
}
if file.HasStagedChanges && file.HasUnstagedChanges {
menuItems = append(menuItems, &types.MenuItem{
DisplayString: self.c.Tr.LcDiscardUnstagedChanges,
OnPress: func() error {
self.c.LogAction(self.c.Tr.Actions.DiscardAllUnstagedChangesInFile)
if err := self.git.WorkingTree.DiscardUnstagedFileChanges(file); err != nil {
return self.c.Error(err)
}
return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.FILES}})
},
})
}
}
}
return self.c.Menu(types.CreateMenuOptions{Title: node.GetPath(), Items: menuItems})
}

View File

@ -1,87 +0,0 @@
package gui
import (
"github.com/jesseduffield/lazygit/pkg/gui/types"
)
func (gui *Gui) handleCreateDiscardMenu() error {
node := gui.getSelectedFileNode()
if node == nil {
return nil
}
var menuItems []*types.MenuItem
if node.File == nil {
menuItems = []*types.MenuItem{
{
DisplayString: gui.c.Tr.LcDiscardAllChanges,
OnPress: func() error {
gui.c.LogAction(gui.c.Tr.Actions.DiscardAllChangesInDirectory)
if err := gui.git.WorkingTree.DiscardAllDirChanges(node); err != nil {
return gui.c.Error(err)
}
return gui.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.FILES}})
},
},
}
if node.GetHasStagedChanges() && node.GetHasUnstagedChanges() {
menuItems = append(menuItems, &types.MenuItem{
DisplayString: gui.c.Tr.LcDiscardUnstagedChanges,
OnPress: func() error {
gui.c.LogAction(gui.c.Tr.Actions.DiscardUnstagedChangesInDirectory)
if err := gui.git.WorkingTree.DiscardUnstagedDirChanges(node); err != nil {
return gui.c.Error(err)
}
return gui.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.FILES}})
},
})
}
} else {
file := node.File
submodules := gui.State.Submodules
if file.IsSubmodule(submodules) {
submodule := file.SubmoduleConfig(submodules)
menuItems = []*types.MenuItem{
{
DisplayString: gui.c.Tr.LcSubmoduleStashAndReset,
OnPress: func() error {
return gui.Controllers.Files.ResetSubmodule(submodule)
},
},
}
} else {
menuItems = []*types.MenuItem{
{
DisplayString: gui.c.Tr.LcDiscardAllChanges,
OnPress: func() error {
gui.c.LogAction(gui.c.Tr.Actions.DiscardAllChangesInFile)
if err := gui.git.WorkingTree.DiscardAllFileChanges(file); err != nil {
return gui.c.Error(err)
}
return gui.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.FILES}})
},
},
}
if file.HasStagedChanges && file.HasUnstagedChanges {
menuItems = append(menuItems, &types.MenuItem{
DisplayString: gui.c.Tr.LcDiscardUnstagedChanges,
OnPress: func() error {
gui.c.LogAction(gui.c.Tr.Actions.DiscardAllUnstagedChangesInFile)
if err := gui.git.WorkingTree.DiscardUnstagedFileChanges(file); err != nil {
return gui.c.Error(err)
}
return gui.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.FILES}})
},
})
}
}
}
return gui.c.Menu(types.CreateMenuOptions{Title: node.GetPath(), Items: menuItems})
}

View File

@ -354,14 +354,6 @@ func (gui *Gui) GetInitialKeybindings() []*types.Binding {
Handler: gui.handleShowAllBranchLogs,
Description: gui.c.Tr.LcAllBranchesLogGraph,
},
{
ViewName: "files",
Contexts: []string{string(context.FILES_CONTEXT_KEY)},
Key: gui.getKey(config.Universal.Remove),
Handler: gui.handleCreateDiscardMenu,
Description: gui.c.Tr.LcViewDiscardOptions,
OpensMenu: true,
},
{
ViewName: "files",
Contexts: []string{string(context.FILES_CONTEXT_KEY)},