use go-git for commits

This commit is contained in:
Jesse Duffield 2018-08-09 14:33:51 +10:00
parent bebe94b4b3
commit 4832d365f1
2 changed files with 31 additions and 1 deletions

View file

@ -14,6 +14,8 @@ import (
"github.com/fatih/color" "github.com/fatih/color"
"github.com/jesseduffield/gocui" "github.com/jesseduffield/gocui"
gitconfig "github.com/tcnksm/go-gitconfig" gitconfig "github.com/tcnksm/go-gitconfig"
git "gopkg.in/src-d/go-git.v4"
"gopkg.in/src-d/go-git.v4/plumbing/object"
) )
var ( var (
@ -455,7 +457,19 @@ func gitCommit(g *gocui.Gui, message string) (string, error) {
runSubProcess(g, "bash", "-c", "git commit -m \""+message+"\"") runSubProcess(g, "bash", "-c", "git commit -m \""+message+"\"")
return "", nil return "", nil
} }
return runDirectCommand("git commit -m \"" + message + "\"") userName, _ := gitconfig.Global("user.name")
userEmail, _ := gitconfig.Global("user.email")
_, err := w.Commit(message, &git.CommitOptions{
Author: &object.Signature{
Name: userName,
Email: userEmail,
When: time.Now(),
},
})
if err != nil {
return err.Error(), err
}
return "", nil
} }
func gitPull() (string, error) { func gitPull() (string, error) {

16
main.go
View file

@ -14,6 +14,7 @@ import (
"github.com/fatih/color" "github.com/fatih/color"
"github.com/jesseduffield/gocui" "github.com/jesseduffield/gocui"
git "gopkg.in/src-d/go-git.v4"
) )
// ErrSubProcess is raised when we are running a subprocess // ErrSubProcess is raised when we are running a subprocess
@ -28,6 +29,8 @@ var (
date string date string
debuggingFlag = flag.Bool("debug", false, "a boolean") debuggingFlag = flag.Bool("debug", false, "a boolean")
versionFlag = flag.Bool("v", false, "Print the current version") versionFlag = flag.Bool("v", false, "Print the current version")
w *git.Worktree
) )
func homeDirectory() string { func homeDirectory() string {
@ -88,6 +91,18 @@ func fallbackVersion() string {
return string(byteVersion) return string(byteVersion)
} }
func setupWorktree() {
r, err := git.PlainOpen(".")
if err != nil {
panic(err)
}
w, err = r.Worktree()
if err != nil {
panic(err)
}
}
func main() { func main() {
startTime = time.Now() startTime = time.Now()
devLog("\n\n\n\n\n\n\n\n\n\n") devLog("\n\n\n\n\n\n\n\n\n\n")
@ -101,6 +116,7 @@ func main() {
} }
verifyInGitRepo() verifyInGitRepo()
navigateToRepoRootDirectory() navigateToRepoRootDirectory()
setupWorktree()
for { for {
if err := run(); err != nil { if err := run(); err != nil {
if err == gocui.ErrQuit { if err == gocui.ErrQuit {