summaryrefslogtreecommitdiffstats
path: root/pkg/gui
diff options
context:
space:
mode:
authorJoel Baranick <joel.baranick@ensighten.com>2022-09-02 21:38:16 -0700
committerJesse Duffield <jessedduffield@gmail.com>2023-07-30 18:35:21 +1000
commit1ce9a87544c87629567812fbb72d4f4a4f37bdf9 (patch)
tree525483b9b74558f8c6ce8f3c050686ad8ce5345e /pkg/gui
parent35e6e6347a37910a48ad312663d5f8ee6f929496 (diff)
Basic support for adding a worktree
Diffstat (limited to 'pkg/gui')
-rw-r--r--pkg/gui/controllers/helpers/worktree_helper.go25
-rw-r--r--pkg/gui/controllers/worktrees_controller.go50
2 files changed, 34 insertions, 41 deletions
diff --git a/pkg/gui/controllers/helpers/worktree_helper.go b/pkg/gui/controllers/helpers/worktree_helper.go
index a1adccd67..fa13d2282 100644
--- a/pkg/gui/controllers/helpers/worktree_helper.go
+++ b/pkg/gui/controllers/helpers/worktree_helper.go
@@ -1,5 +1,7 @@
package helpers
+import "github.com/jesseduffield/lazygit/pkg/gui/types"
+
type IWorktreeHelper interface {
GetMainWorktreeName() string
GetCurrentWorktreeName() string
@@ -25,6 +27,29 @@ func (self *WorktreeHelper) GetMainWorktreeName() string {
return ""
}
+func (self *WorktreeHelper) NewWorktree() error {
+ return self.c.Prompt(types.PromptOpts{
+ Title: self.c.Tr.NewWorktreePath,
+ HandleConfirm: func(response string) error {
+ self.c.LogAction(self.c.Tr.Actions.CreateWorktree)
+ if err := self.c.Git().Worktree.New(sanitizedBranchName(response)); err != nil {
+ return err
+ }
+
+ //if self.c.CurrentContext() != self.contexts.Worktrees {
+ // if err := self.c.PushContext(self.contexts.Worktrees); err != nil {
+ // return err
+ // }
+ //}
+
+ // self.contexts.LocalCommits.SetSelectedLineIdx(0)
+ // self.contexts.Branches.SetSelectedLineIdx(0)
+
+ return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC})
+ },
+ })
+}
+
//func (self *WorktreeHelper) GetCurrentWorktreeName() string {
// for _, worktree := range self.c.Model().Worktrees {
// if worktree.Current() {
diff --git a/pkg/gui/controllers/worktrees_controller.go b/pkg/gui/controllers/worktrees_controller.go
index e004f9dfa..d14def638 100644
--- a/pkg/gui/controllers/worktrees_controller.go
+++ b/pkg/gui/controllers/worktrees_controller.go
@@ -40,11 +40,11 @@ func (self *WorktreesController) GetKeybindings(opts types.KeybindingsOpts) []*t
Handler: self.checkSelected(self.delete),
Description: self.c.Tr.DeleteWorktree,
},
- //{
- // Key: opts.GetKey(opts.Config.Universal.New),
- // Handler: self.create,
- // Description: self.c.Tr.LcCreateTag,
- //},
+ {
+ Key: opts.GetKey(opts.Config.Universal.New),
+ Handler: self.create,
+ Description: self.c.Tr.CreateWorktree,
+ },
}
return bindings
@@ -103,6 +103,10 @@ func (self *WorktreesController) GetOnRenderToMain() func() error {
// return gui.dispatchSwitchToRepo(submodule.Path, true)
//}
+func (self *WorktreesController) create() error {
+ return self.c.Helpers().Worktree.NewWorktree()
+}
+
func (self *WorktreesController) delete(worktree *models.Worktree) error {
if worktree.Main() {
return self.c.ErrorMsg(self.c.Tr.CantDeleteMainWorktree)
@@ -147,42 +151,6 @@ func (self *WorktreesController) deleteWithForce(worktree *models.Worktree, forc
})
}
-//
-// func (self *WorktreesController) push(tag *models.Tag) error {
-// title := utils.ResolvePlaceholderString(
-// self.c.Tr.PushTagTitle,
-// map[string]string{
-// "tagName": tag.Name,
-// },
-// )
-//
-// return self.c.Prompt(types.PromptOpts{
-// Title: title,
-// InitialContent: "origin",
-// FindSuggestionsFunc: self.helpers.Suggestions.GetRemoteSuggestionsFunc(),
-// HandleConfirm: func(response string) error {
-// return self.c.WithWaitingStatus(self.c.Tr.PushingTagStatus, func() error {
-// self.c.LogAction(self.c.Tr.Actions.PushTag)
-// err := self.git.Tag.Push(response, tag.Name)
-// if err != nil {
-// _ = self.c.Error(err)
-// }
-//
-// return nil
-// })
-// },
-// })
-// }
-//
-// func (self *WorktreesController) createResetMenu(tag *models.Tag) error {
-// return self.helpers.Refs.CreateGitResetMenu(tag.Name)
-// }
-//
-// func (self *WorktreesController) create() error {
-// // leaving commit SHA blank so that we're just creating the tag for the current commit
-// return self.helpers.Tags.CreateTagMenu("", func() { self.context().SetSelectedLineIdx(0) })
-// }
-
func (self *WorktreesController) GetOnClick() func() error {
return self.checkSelected(self.enter)
}