summaryrefslogtreecommitdiff
path: root/pkg/gui/statusview.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/gui/statusview.go')
-rw-r--r--pkg/gui/statusview.go83
1 files changed, 79 insertions, 4 deletions
diff --git a/pkg/gui/statusview.go b/pkg/gui/statusview.go
index d6f0be1..494e07a 100644
--- a/pkg/gui/statusview.go
+++ b/pkg/gui/statusview.go
@@ -2,19 +2,24 @@ package gui
import (
"fmt"
+ "time"
"github.com/isacikgoz/gitbatch/pkg/git"
"github.com/jroimartin/gocui"
+ ggt "gopkg.in/src-d/go-git.v4"
+ "gopkg.in/src-d/go-git.v4/plumbing/object"
)
var (
statusHeaderViewFeature = viewFeature{Name: "status-header", Title: " Status Header "}
// statusViewFeature = viewFeature{Name: "status", Title: " Status "}
- stageViewFeature = viewFeature{Name: "staged", Title: " Staged "}
- unstageViewFeature = viewFeature{Name: "unstaged", Title: " Not Staged "}
- stashViewFeature = viewFeature{Name: "stash", Title: " Stash "}
+ stageViewFeature = viewFeature{Name: "staged", Title: " Staged "}
+ unstageViewFeature = viewFeature{Name: "unstaged", Title: " Not Staged "}
+ stashViewFeature = viewFeature{Name: "stash", Title: " Stash "}
+ commitMessageViewFeature = viewFeature{Name: "commitmessage", Title: " Commit Mesage "}
- statusViews = []viewFeature{stageViewFeature, unstageViewFeature, stashViewFeature}
+ statusViews = []viewFeature{stageViewFeature, unstageViewFeature, stashViewFeature}
+ commitMesageReturnView string
)
// open the status layout
@@ -168,3 +173,73 @@ func refreshAllStatusView(g *gocui.Gui, entity *git.RepoEntity) error {
}
return nil
}
+
+// open the commit message views
+func (gui *Gui) openCommitMessageView(g *gocui.Gui, v *gocui.View) error {
+ maxX, maxY := g.Size()
+ commitMesageReturnView = v.Name()
+ v, err := g.SetView(commitMessageViewFeature.Name, maxX/2-30, maxY/2-3, maxX/2+30, maxY/2+3)
+ if err != nil {
+ if err != gocui.ErrUnknownView {
+ return err
+ }
+ v.Title = commitMessageViewFeature.Title
+ v.Wrap = true
+ v.Editable = true
+ v.Editor = gocui.DefaultEditor
+ v.Highlight = true
+ g.Cursor = true
+ }
+ gui.updateKeyBindingsView(g, commitMessageViewFeature.Name)
+ if _, err := g.SetCurrentView(commitMessageViewFeature.Name); err != nil {
+ return err
+ }
+ return nil
+}
+
+// close the opened commite mesage view
+func (gui *Gui) submitCommitMessageView(g *gocui.Gui, v *gocui.View) error {
+ entity := gui.getSelectedRepository()
+ w, err := entity.Repository.Worktree()
+ if err != nil {
+ return err
+ }
+ // WIP: This better be removed to git pkg
+ // TODO: read config and get name & e-mail
+ _, err = w.Commit(v.ViewBuffer(), &ggt.CommitOptions{
+ Author: &object.Signature{
+ Name: "İbrahim Serdar Açıkgöz",
+ Email: "serdaracikgoz86@gmail.com",
+ When: time.Now(),
+ },
+ })
+ if err != nil {
+ return err
+ }
+ entity.Refresh()
+ err = gui.closeCommitMessageView(g, v)
+ return err
+}
+
+// close the opened commite mesage view
+func (gui *Gui) closeCommitMessageView(g *gocui.Gui, v *gocui.View) error {
+ entity := gui.getSelectedRepository()
+ g.Cursor = false
+ if err := g.DeleteView(commitMessageViewFeature.Name); err != nil {
+ return err
+ }
+ if _, err := g.SetCurrentView(commitMesageReturnView); err != nil {
+ return err
+ }
+ if err := gui.refreshMain(g); err != nil {
+ return err
+ }
+ if err := gui.refreshViews(g, entity); err != nil {
+ return err
+ }
+ if err := refreshAllStatusView(g, entity); err != nil {
+ return err
+ }
+ gui.updateKeyBindingsView(g, commitMesageReturnView)
+ return nil
+}