2019-11-21 13:53:04.526575 -0700 MST m=+0.013733497
parent
b73a962556
commit
217a221cf4
|
|
@ -0,0 +1,67 @@
|
||||||
|
package versions
|
||||||
|
|
||||||
|
import (
|
||||||
|
"local/notes-server/config"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
git "gopkg.in/src-d/go-git.v4"
|
||||||
|
"gopkg.in/src-d/go-git.v4/plumbing/object"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Versions struct {
|
||||||
|
repo *git.Repository
|
||||||
|
}
|
||||||
|
|
||||||
|
func New() (*Versions, error) {
|
||||||
|
repo, err := git.PlainInit(config.Root, false)
|
||||||
|
if err != nil {
|
||||||
|
repo, err = git.PlainOpen(config.Root)
|
||||||
|
}
|
||||||
|
return &Versions{
|
||||||
|
repo: repo,
|
||||||
|
}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *Versions) Gitmmit() error {
|
||||||
|
if err := v.AddAll(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if err := v.Commit(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *Versions) AddAll() error {
|
||||||
|
worktree, err := v.worktree()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, path := range []string{".", "./*", "./**", "/", "/**", "/*"} {
|
||||||
|
if err := worktree.AddGlob(path); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *Versions) Commit() error {
|
||||||
|
worktree, err := v.worktree()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
opts := &git.CommitOptions{Author: &object.Signature{}}
|
||||||
|
_, err = worktree.Commit(time.Now().String(), opts)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *Versions) worktree() (*git.Worktree, error) {
|
||||||
|
worktree, err := v.repo.Worktree()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return worktree, nil
|
||||||
|
}
|
||||||
|
|
@ -1,25 +1,15 @@
|
||||||
package versions
|
package versions
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"local/notes-server/config"
|
"os/exec"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
git "gopkg.in/src-d/go-git.v4"
|
|
||||||
"gopkg.in/src-d/go-git.v4/plumbing/object"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type Versions struct {
|
type Versions struct {
|
||||||
repo *git.Repository
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func New() (*Versions, error) {
|
func New() (*Versions, error) {
|
||||||
repo, err := git.PlainInit(config.Root, false)
|
return &Versions{}, nil
|
||||||
if err != nil {
|
|
||||||
repo, err = git.PlainOpen(config.Root)
|
|
||||||
}
|
|
||||||
return &Versions{
|
|
||||||
repo: repo,
|
|
||||||
}, err
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (v *Versions) Gitmmit() error {
|
func (v *Versions) Gitmmit() error {
|
||||||
|
|
@ -33,35 +23,11 @@ func (v *Versions) Gitmmit() error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (v *Versions) AddAll() error {
|
func (v *Versions) AddAll() error {
|
||||||
worktree, err := v.worktree()
|
cmd := exec.Command("git", "add", "-A", ":/")
|
||||||
if err != nil {
|
return cmd.Run()
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, path := range []string{".", "./*", "./**", "/", "/**", "/*"} {
|
|
||||||
if err := worktree.AddGlob(path); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (v *Versions) Commit() error {
|
func (v *Versions) Commit() error {
|
||||||
worktree, err := v.worktree()
|
cmd := exec.Command("git", "commit", "-m", time.Now().String())
|
||||||
if err != nil {
|
return cmd.Run()
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
opts := &git.CommitOptions{Author: &object.Signature{}}
|
|
||||||
_, err = worktree.Commit(time.Now().String(), opts)
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
func (v *Versions) worktree() (*git.Worktree, error) {
|
|
||||||
worktree, err := v.repo.Worktree()
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return worktree, nil
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -26,27 +26,15 @@ func TestVersionsHappy(t *testing.T) {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, err := v.repo.Head(); err == nil {
|
|
||||||
t.Error(err)
|
|
||||||
}
|
|
||||||
if err := v.AddAll(); err != nil {
|
if err := v.AddAll(); err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
if _, err := v.repo.Head(); err == nil {
|
|
||||||
t.Error(err)
|
|
||||||
}
|
|
||||||
if err := v.Commit(); err != nil {
|
if err := v.Commit(); err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
if _, err := v.repo.Head(); err != nil {
|
|
||||||
t.Error(err)
|
|
||||||
}
|
|
||||||
if err := v.Gitmmit(); err != nil {
|
if err := v.Gitmmit(); err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
if _, err := v.repo.Head(); err != nil {
|
|
||||||
t.Error(err)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestVersionsBad(t *testing.T) {
|
func TestVersionsBad(t *testing.T) {
|
||||||
|
|
@ -74,5 +62,4 @@ I'm a doc
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
t.Log(v)
|
t.Log(v)
|
||||||
t.Log(v.repo.Config())
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue