notes-server/versions/versions.go

55 lines
1.1 KiB
Go
Executable File

package versions
import (
"fmt"
"io/ioutil"
"gitea.inhome.blapointe.com/local/notes-server/config"
"log"
"os"
"os/exec"
"path"
"strings"
"time"
)
type Versions struct {
}
func New() (*Versions, error) {
v := &Versions{}
v.cmd("git", "init")
v.cmd("git", "config", "user.email", "user@user.user")
v.cmd("git", "config", "user.name", "user")
s := getScript()
err := ioutil.WriteFile(path.Join(config.Root, "./.git/hooks/pre-commit"), []byte(s), os.ModePerm)
return v, err
}
func (v *Versions) Gitmmit() error {
if err := v.AddAll(); err != nil {
return fmt.Errorf("cannot add all: %v", err)
}
if err := v.Commit(); err != nil {
return fmt.Errorf("cannot commit: %v", err)
}
return nil
}
func (v *Versions) AddAll() error {
return v.cmd("git", "add", "-A", ":/")
}
func (v *Versions) Commit() error {
return v.cmd("git", "commit", "-m", time.Now().String())
}
func (v *Versions) cmd(cmd string, args ...string) error {
command := exec.Command(cmd, args...)
command.Dir = config.Root
out, err := command.CombinedOutput()
if err != nil {
log.Println(cmd, args, ":", strings.TrimSpace(string(out)))
}
return err
}