diff options
author | Jesse Duffield <jessedduffield@gmail.com> | 2020-09-30 21:12:03 +1000 |
---|---|---|
committer | Jesse Duffield <jessedduffield@gmail.com> | 2020-10-02 08:09:42 +1000 |
commit | d4ab607d0dd94f73eb1dcd4ba9842eb86b6aa0f4 (patch) | |
tree | 4cb72d33183f60fc8a943dd35d7299ce07d44cee /pkg/gui | |
parent | ea307c8d94623bd0279297db2cf3990492998ab4 (diff) |
allow adding a submodule
Diffstat (limited to 'pkg/gui')
-rw-r--r-- | pkg/gui/custom_commands.go | 16 | ||||
-rw-r--r-- | pkg/gui/keybindings.go | 7 | ||||
-rw-r--r-- | pkg/gui/submodules_panel.go | 40 |
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() |