summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--defaultBehavior.go62
-rw-r--r--doMerge.go36
-rw-r--r--doNormal.go4
-rw-r--r--doPatch.go24
-rw-r--r--find.go21
-rw-r--r--main.go2
6 files changed, 75 insertions, 74 deletions
diff --git a/defaultBehavior.go b/defaultBehavior.go
index c9bbeeb..61f3224 100644
--- a/defaultBehavior.go
+++ b/defaultBehavior.go
@@ -10,6 +10,38 @@ import (
"go.wit.com/log"
)
+func doDefaultBehavior() (string, error) {
+ // DEFAULT BEHAVIOR CHANGES BETWEEN MODES
+ if me.forge.Config.Mode == forgepb.ForgeMode_NORMAL || me.forge.Config.Mode == forgepb.ForgeMode_USER {
+ // PROBABLY YOU ARE WRITING CODE
+ // got to the end with nothing to do (?)
+ s, err := findWorkRepos()
+ // found some repos at least
+ // every repo is in a really clean state. no extra files anywhere
+ // no dirty repos, no repos that need to be published
+ // nothing different between user and master branch version. not common
+
+ if err == nil {
+ log.Info("All of your git repositories appear to be in perfect shape")
+ }
+ return s, err
+ }
+
+ if me.forge.Config.Mode == forgepb.ForgeMode_MASTER {
+ // PROBABLY YOU ARE PUBLISHING / MERGING CODE
+ err := defaultBehaviorMaster()
+ if err != nil {
+ return "has problems", err
+ }
+ return "default master behavior is ok", nil
+ }
+
+ // PROBABLY A NEW USER
+ found := findAll()
+ footer := me.forge.PrintDefaultTB(found)
+ return "new user: " + footer, nil
+}
+
func defaultBehaviorMaster() error {
var reallybad bool
// always run dirty first
@@ -40,36 +72,6 @@ func defaultBehaviorMaster() error {
return nil
}
-func doDefaultBehavior() (string, error) {
- // DEFAULT BEHAVIOR CHANGES BETWEEN MODES
- if me.forge.Config.Mode == forgepb.ForgeMode_NORMAL || me.forge.Config.Mode == forgepb.ForgeMode_USER {
- // PROBABLY YOU ARE WRITING CODE
- // got to the end with nothing to do (?)
- if showWorkRepos() {
- // found some repos at least
- }
- // every repo is in a really clean state. no extra files anywhere
- // no dirty repos, no repos that need to be published
- // nothing different between user and master branch version. not common
- s := "All of your git repositories appear to be in perfect shape"
- return s, nil
- }
-
- if me.forge.Config.Mode == forgepb.ForgeMode_MASTER {
- // PROBABLY YOU ARE PUBLISHING / MERGING CODE
- err := defaultBehaviorMaster()
- if err != nil {
- return "has problems", err
- }
- return "default master behavior is ok", nil
- }
-
- // PROBABLY A NEW USER
- found := findAll()
- footer := me.forge.PrintDefaultTB(found)
- return "new user: " + footer, nil
-}
-
/*
func defaultBehavior() error {
// always run dirty first
diff --git a/doMerge.go b/doMerge.go
index 9dab8ee..c359ecc 100644
--- a/doMerge.go
+++ b/doMerge.go
@@ -13,13 +13,15 @@ import (
"go.wit.com/log"
)
-func doMerge() error {
+func doMerge() (string, error) {
+ var s string
+ var err error
if argv.All == true {
start := time.Now()
repos, err := doMergeDevel()
dur := time.Since(start)
if err != nil {
- badExit(err)
+ return "doMergeDevel() failure", err
}
log.Printf("Merged %d devel branches in %s\n", repos.Len(), shell.FormatDuration(dur))
@@ -27,46 +29,44 @@ func doMerge() error {
repos, err = doMergeMaster()
dur = time.Since(start)
if err != nil {
- badExit(err)
+ return "doMergeMaster() failure", err
}
- log.Printf("Merged %d master branches in %s\n", repos.Len(), shell.FormatDuration(dur))
- okExit("")
+ return log.Sprintf("Merged %d master branches in %s", repos.Len(), shell.FormatDuration(dur)), nil
}
if argv.Merge.Devel != nil {
start := time.Now()
repos, err := doMergeDevel()
dur := time.Since(start)
if err != nil {
- badExit(err)
+ return "doMergeDevel() failure", err
}
- log.Printf("Merged %d devel branches in %s\n", repos.Len(), shell.FormatDuration(dur))
- okExit("")
+ return log.Sprintf("Merged %d devel branches in %s", repos.Len(), shell.FormatDuration(dur)), nil
}
if argv.Merge.Master != nil {
start := time.Now()
repos, err := doMergeMaster()
dur := time.Since(start)
if err != nil {
- badExit(err)
+ return "doMergeMaster() failure", err
}
- log.Printf("Merged %d master branches in %s\n", repos.Len(), shell.FormatDuration(dur))
- okExit("")
+ return log.Sprintf("Merged %d master branches in %s", repos.Len(), shell.FormatDuration(dur)), nil
}
if argv.Merge.Check != nil {
- if err := safeToPublish(); err != nil {
- me.sh.BadExit("Merge is not complete. Not safe to Publish.", err)
+ err = safeToPublish()
+ if err == nil {
+ return "probably safe to publish and merge", nil
}
- okExit("")
+ return "Not safe to Publish.", err
}
- if showWorkRepos() {
- // found some repos at least
- } else {
+ s, err = findWorkRepos()
+ // found some repos at least
+ if err == nil {
// every repo is in a really clean state. no extra files anywhere
// no dirty repos, no repos that need to be published
// nothing different between user and master branch version. not common
log.Info("There does't seem to be anything to merge. Your repos are very consistent.")
}
- return nil
+ return s, err
}
func hashesMatch(repo *gitpb.Repo) error {
diff --git a/doNormal.go b/doNormal.go
index eb39db0..28bf1a4 100644
--- a/doNormal.go
+++ b/doNormal.go
@@ -101,7 +101,9 @@ func doNormalOld() bool {
if count > 0 {
log.Info("Some repos are not in a 'normal' state. error count =", count)
log.Info("TODO: list the repos here. forge patch repos?")
- showWorkRepos()
+ s, err := findWorkRepos()
+ _ = s
+ _ = err
config.SetChanged("repos", true)
return false
}
diff --git a/doPatch.go b/doPatch.go
index 75e23a6..c6fc031 100644
--- a/doPatch.go
+++ b/doPatch.go
@@ -285,30 +285,6 @@ func isPatchIdApplied(repo *gitpb.Repo, patch *forgepb.Patch) (string, string, e
return patchId, newhash, nil
}
-// Shows repos that are:
-// - git dirty repos
-// - repos with 'user' branch patches not in 'devel' branch
-// - repos with awaiting master branch verions
-//
-// return true if any are found
-func showWorkRepos() bool {
- // always run dirty first
- me.forge.CheckDirtyQuiet()
-
- // if no option is given to patch, list out the
- // repos that have patches ready in them
- found := findReposWithPatches()
- found.SortNamespace()
- if found.Len() == 0 {
- log.Info("you currently have no repos with patches")
- return false
- } else {
- footer := me.forge.PrintDefaultTB(found)
- log.Info("repos with patches or unsaved changes:", footer)
- }
- return true
-}
-
func cleanSubject(line string) string {
// Regular expression to remove "Subject:" and "[PATCH...]" patterns
re := regexp.MustCompile(`(?i)^Subject:\s*(\[\s*PATCH[^\]]*\]\s*)?`)
diff --git a/find.go b/find.go
index 6ff3d00..52a94c9 100644
--- a/find.go
+++ b/find.go
@@ -276,3 +276,24 @@ func cloneReposWithPatches() *gitpb.Repos {
}
return found
}
+
+// Shows repos that are:
+// - git dirty repos
+// - repos with 'user' branch patches not in 'devel' branch
+// - repos with awaiting master branch verions
+//
+// return true if any are found
+func findWorkRepos() (string, error) {
+ // always run dirty first
+ me.forge.CheckDirtyQuiet()
+
+ // if no option is given to patch, list out the
+ // repos that have patches ready in them
+ found := findReposWithPatches()
+ found.SortNamespace()
+ if found.Len() == 0 {
+ return "you currently have no repos with patches", nil
+ }
+ footer := me.forge.PrintDefaultTB(found)
+ return "repos with patches or unsaved changes: " + footer, nil
+}
diff --git a/main.go b/main.go
index cd008af..a6920c7 100644
--- a/main.go
+++ b/main.go
@@ -130,7 +130,7 @@ func main() {
}
if argv.Merge != nil {
- err = doMerge()
+ s, err = doMerge()
}
if argv.Add != nil {