68 lines
1.2 KiB
Go
Executable File
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
|
|
}
|