package versions import ( "fmt" "io/ioutil" "gogs.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 }