notes-server/versions/.versions.go

68 lines
1.2 KiB
Go
Executable File

package versions
import (
"gitea.inhome.blapointe.com/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
}