diff options
| -rw-r--r-- | defaultBehavior.go | 62 | ||||
| -rw-r--r-- | doMerge.go | 36 | ||||
| -rw-r--r-- | doNormal.go | 4 | ||||
| -rw-r--r-- | doPatch.go | 24 | ||||
| -rw-r--r-- | find.go | 21 | ||||
| -rw-r--r-- | main.go | 2 |
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 @@ -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 } @@ -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*)?`) @@ -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 +} @@ -130,7 +130,7 @@ func main() { } if argv.Merge != nil { - err = doMerge() + s, err = doMerge() } if argv.Add != nil { |
