summaryrefslogtreecommitdiff
path: root/checkDirty.go
diff options
context:
space:
mode:
Diffstat (limited to 'checkDirty.go')
-rw-r--r--checkDirty.go45
1 files changed, 45 insertions, 0 deletions
diff --git a/checkDirty.go b/checkDirty.go
new file mode 100644
index 0000000..0db0ff4
--- /dev/null
+++ b/checkDirty.go
@@ -0,0 +1,45 @@
+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
+
+}