summaryrefslogtreecommitdiff
path: root/submitPatches.go
diff options
context:
space:
mode:
Diffstat (limited to 'submitPatches.go')
-rw-r--r--submitPatches.go51
1 files changed, 48 insertions, 3 deletions
diff --git a/submitPatches.go b/submitPatches.go
index e612ded..5507b1e 100644
--- a/submitPatches.go
+++ b/submitPatches.go
@@ -1,6 +1,7 @@
package main
import (
+ "path/filepath"
"strconv"
"strings"
@@ -8,6 +9,7 @@ import (
"go.wit.com/lib/gadgets"
"go.wit.com/lib/gui/gowit"
"go.wit.com/lib/gui/repostatus"
+ "go.wit.com/lib/gui/shell"
"go.wit.com/log"
)
@@ -172,8 +174,18 @@ func submitPatchesBox(box *gui.Node) *patchSummary {
}
}
s.submitB = s.grid.NewButton("Submit Patches", func() {
- for i, p := range s.allp {
- log.Info(i, p.ref, p.rs.String())
+ patchdir := filepath.Join(me.userHomePwd.String(), "autotypist.patchset")
+ if shell.Exists(patchdir) {
+ log.Info("patchset dir already exists", patchdir)
+ return
+ } else {
+ shell.Mkdir(patchdir)
+ }
+ if !shell.Exists(patchdir) {
+ log.Info("something went wrong making", patchdir)
+ return
+ }
+ if makePatchset(patchdir) {
}
})
// disable these until there are not dirty repos
@@ -188,7 +200,12 @@ func (s *patchSummary) Update() {
for _, repo := range me.allrepos {
total += 1
if repo.status.CheckDirty() {
- dirty += 1
+ if repo.String() == "go.wit.com/apps/autotypist" {
+ // log.Info("ignoring dirty autotypist for now")
+ dirty += 1
+ } else {
+ dirty += 1
+ }
}
if repo.status.ReadOnly() {
readonly += 1
@@ -248,3 +265,31 @@ func (s *patchSummary) GetPatches() (int, []*patch) {
}
return patchcount, patches
}
+
+func makePatchset(setdir string) bool {
+ for _, repo := range me.allrepos {
+ userv := repo.status.GetUserVersion()
+ develv := repo.status.GetDevelVersion()
+ usern := repo.status.GetUserBranchName()
+ develn := repo.status.GetDevelBranchName()
+ if userv == develv {
+ // this repo is unchanged
+ continue
+ }
+
+ repodir := filepath.Join(setdir, repo.String())
+ shell.Mkdir(repodir)
+ // git format-patch branch1..branch2
+ gitcmd := []string{"git", "format-patch", "-o", repodir, develn + ".." + usern}
+ log.Info("Run:", gitcmd)
+ err, output := repo.status.RunCmd(gitcmd)
+ log.Info("output =", output)
+ if err == nil {
+ log.Info("patches made okay for:", repo.String())
+ continue
+ }
+ log.Info("patches failed for:", repo.String())
+ return false
+ }
+ return true
+}