summaryrefslogtreecommitdiffstats
path: root/pkg/gui
diff options
context:
space:
mode:
authorJesse Duffield <jessedduffield@gmail.com>2020-09-30 21:12:03 +1000
committerJesse Duffield <jessedduffield@gmail.com>2020-10-02 08:09:42 +1000
commitd4ab607d0dd94f73eb1dcd4ba9842eb86b6aa0f4 (patch)
tree4cb72d33183f60fc8a943dd35d7299ce07d44cee /pkg/gui
parentea307c8d94623bd0279297db2cf3990492998ab4 (diff)
allow adding a submodule
Diffstat (limited to 'pkg/gui')
-rw-r--r--pkg/gui/custom_commands.go16
-rw-r--r--pkg/gui/keybindings.go7
-rw-r--r--pkg/gui/submodules_panel.go40
3 files changed, 36 insertions, 27 deletions
diff --git a/pkg/gui/custom_commands.go b/pkg/gui/custom_commands.go
index df148a7af..74a07e9d1 100644
--- a/pkg/gui/custom_commands.go
+++ b/pkg/gui/custom_commands.go
@@ -1,10 +1,8 @@
package gui
import (
- "bytes"
"log"
"strings"
- "text/template"
"github.com/fatih/color"
"github.com/jesseduffield/gocui"
@@ -43,19 +41,7 @@ func (gui *Gui) resolveTemplate(templateStr string, promptResponses []string) (s
PromptResponses: promptResponses,
}
- tmpl, err := template.New("template").Parse(templateStr)
- if err != nil {
- return "", err
- }
-
- var buf bytes.Buffer
- if err := tmpl.Execute(&buf, objects); err != nil {
- return "", err
- }
-
- cmdStr := buf.String()
-
- return cmdStr, nil
+ return utils.ResolveTemplate(templateStr, objects)
}
func (gui *Gui) handleCustomCommandKeybinding(customCommand CustomCommand) func() error {
diff --git a/pkg/gui/keybindings.go b/pkg/gui/keybindings.go
index fcdbbb2c1..7ee9cacee 100644
--- a/pkg/gui/keybindings.go
+++ b/pkg/gui/keybindings.go
@@ -1601,6 +1601,13 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
Handler: gui.wrappedHandler(gui.handleResetSubmodule),
Description: gui.Tr.SLocalize("submoduleStashAndReset"),
},
+ {
+ ViewName: "files",
+ Contexts: []string{SUBMODULES_CONTEXT_KEY},
+ Key: gui.getKey("universal.new"),
+ Handler: gui.wrappedHandler(gui.handleAddSubmodule),
+ Description: gui.Tr.SLocalize("addSubmodule"),
+ },
}
for _, viewName := range []string{"status", "branches", "files", "commits", "commitFiles", "stash", "menu"} {
diff --git a/pkg/gui/submodules_panel.go b/pkg/gui/submodules_panel.go
index 7089a9015..abc021123 100644
--- a/pkg/gui/submodules_panel.go
+++ b/pkg/gui/submodules_panel.go
@@ -3,6 +3,8 @@ package gui
import (
"fmt"
"os"
+ "path/filepath"
+ "strings"
"github.com/fatih/color"
"github.com/jesseduffield/lazygit/pkg/commands/models"
@@ -71,10 +73,10 @@ func (gui *Gui) handleRemoveSubmodule() error {
return gui.ask(askOpts{
title: gui.Tr.SLocalize("RemoveSubmodule"),
- prompt: gui.Tr.SLocalize("RemoveSubmodulePrompt") + " '" + submodule.Name + "'?",
+ prompt: gui.Tr.SLocalizef("RemoveSubmodulePrompt", submodule.Name),
handleConfirm: func() error {
if err := gui.GitCommand.SubmoduleDelete(submodule); err != nil {
- return err
+ return gui.surfaceError(err)
}
return gui.refreshSidePanels(refreshOptions{scope: []int{SUBMODULES, FILES}})
@@ -121,16 +123,30 @@ func (gui *Gui) resetSubmodule(submodule *models.SubmoduleConfig) error {
return gui.refreshSidePanels(refreshOptions{mode: ASYNC, scope: []int{FILES, SUBMODULES}})
}
-// func (gui *Gui) handleAddsubmodule(g *gocui.Gui, v *gocui.View) error {
-// return gui.prompt(gui.Tr.SLocalize("newsubmoduleName"), "", func(submoduleName string) error {
-// return gui.prompt(gui.Tr.SLocalize("newsubmoduleUrl"), "", func(submoduleUrl string) error {
-// if err := gui.GitCommand.Addsubmodule(submoduleName, submoduleUrl); err != nil {
-// return err
-// }
-// return gui.refreshSidePanels(refreshOptions{scope: []int{submoduleS}})
-// })
-// })
-// }
+func (gui *Gui) handleAddSubmodule() error {
+ return gui.prompt(gui.Tr.SLocalize("newSubmoduleUrl"), "", func(submoduleUrl string) error {
+ nameSuggestion := filepath.Base(strings.TrimSuffix(submoduleUrl, filepath.Ext(submoduleUrl)))
+
+ return gui.prompt(gui.Tr.SLocalize("newSubmoduleName"), nameSuggestion, func(submoduleName string) error {
+ return gui.prompt(gui.Tr.SLocalize("newSubmodulePath"), submoduleName, func(submodulePath string) error {
+ return gui.WithWaitingStatus(gui.Tr.SLocalize("addingSubmoduleStatus"), func() error {
+ err := gui.GitCommand.AddSubmodule(submoduleName, submodulePath, submoduleUrl)
+ gui.handleCredentialsPopup(err)
+
+ return gui.refreshSidePanels(refreshOptions{scope: []int{SUBMODULES}})
+ })
+
+ // go func() {
+ // err := gui.GitCommand.AddSubmodule(submoduleName, submodulePath, submoduleUrl)
+ // gui.handleCredentialsPopup(err)
+
+ // _ = gui.refreshSidePanels(refreshOptions{scope: []int{SUBMODULES}})
+ // }()
+ return nil
+ })
+ })
+ })
+}
// func (gui *Gui) handleEditsubmodule(g *gocui.Gui, v *gocui.View) error {
// submodule := gui.getSelectedSubmodule()