gitpb/checkDirty.go

46 lines
932 B
Go

package gitpb
// runs git, parses output
// types faster than you can
import (
"fmt"
"strings"
"go.wit.com/lib/gui/shell"
"go.wit.com/log"
)
func (repo *Repo) NoteChange(s string) {
log.Warn("NoteChange()", s)
}
// just return the current value
func (repo *Repo) IsDirty() bool {
return repo.Dirty
}
// actually os.Exec('git')
func (repo *Repo) CheckDirty() bool {
cmd := []string{"git", "status", "--porcelain"}
r := shell.PathRunLog(repo.FullPath, cmd, GITPB)
if r.Error != nil {
log.Warn("CheckDirty() status cmd =", cmd)
out := strings.Join(r.Stdout, "\n")
log.Warn("CheckDirty() status out =", out)
log.Warn("CheckDirty() status err =", r.Error)
log.Error(r.Error, "CheckDirty() git status error")
repo.NoteChange("git status is in error " + fmt.Sprint(r.Error))
repo.Dirty = true
return true
}
if len(r.Stdout) == 0 {
repo.Dirty = false
return false
}
repo.Dirty = true
return true
}