summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--defaultBehavior.go89
-rw-r--r--doCommit.go2
-rw-r--r--exit.go29
-rw-r--r--main.go29
4 files changed, 83 insertions, 66 deletions
diff --git a/defaultBehavior.go b/defaultBehavior.go
index c215aa2..b42ca34 100644
--- a/defaultBehavior.go
+++ b/defaultBehavior.go
@@ -4,9 +4,73 @@
package main
import (
+ "errors"
+
+ "go.wit.com/lib/protobuf/forgepb"
"go.wit.com/log"
)
+func defaultBehaviorMaster() error {
+ var reallybad 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()
+ if found.Len() == 0 {
+ log.Info("you currently have no repos with patches")
+ return nil
+ }
+ // warn about dirty repos not in master branches
+ for repo := range found.IterAll() {
+ if repo.CheckDirty() {
+ if repo.GetCurrentBranchName() != repo.GetUserBranchName() {
+ repo.State = "DIRTY BAD"
+ reallybad = true
+ }
+ // return log.Errorf("%s repo is dirty", repo.FullPath)
+ }
+ }
+ footer := me.forge.PrintDefaultTB(found)
+ log.Info("default master table", footer)
+ if reallybad {
+ return errors.New("\nYOU ARE MAKING EDITS ON NON USER BRANCHES\n")
+ }
+ 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
me.forge.CheckDirtyQuiet()
@@ -46,27 +110,4 @@ func defaultBehavior() error {
}
return nil
}
-
-func defaultBehaviorMaster() 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()
- if found.Len() == 0 {
- log.Info("you currently have no repos with patches")
- return nil
- }
- // warn about dirty repos not in master branches
- for repo := range found.IterAll() {
- if repo.CheckDirty() {
- if repo.GetCurrentBranchName() != repo.GetUserBranchName() {
- repo.State = "DIRTY REPO NOT IN USER BRANCH"
- }
- // return log.Errorf("%s repo is dirty", repo.FullPath)
- }
- }
- me.forge.PrintDefaultTB(found)
- return nil
-}
+*/
diff --git a/doCommit.go b/doCommit.go
index 8f041b3..4a2267c 100644
--- a/doCommit.go
+++ b/doCommit.go
@@ -19,7 +19,7 @@ func doCommit() (string, error) {
s := log.Sprintf("%s [git commit --all]", repo.GetNamespace())
setTerminalTitle(s)
if err := doCommitRepo(repo); err != nil {
- badExit(err)
+ return "failed to commit", err
}
newpatches = true
}
diff --git a/exit.go b/exit.go
index 7b9fa8c..8b07d0c 100644
--- a/exit.go
+++ b/exit.go
@@ -4,37 +4,38 @@
package main
import (
- "os"
-
"go.wit.com/gui"
"go.wit.com/lib/protobuf/gitpb"
"go.wit.com/log"
)
-func okExit(thing string) {
+func forgeShutdown() {
gui.UnloadToolkits()
if configSave {
me.forge.SetConfigSave(configSave)
}
- if thing != "" {
- log.Info("forge exit:", thing, "ok")
+ if err := me.forge.Close(); err != nil {
+ log.Info("ABNORMAL END", err)
}
- me.forge.Exit()
+}
+
+func okExit(thing string) {
+ forgeShutdown()
+ me.sh.GoodExit(thing)
}
func badExit(err error) {
- log.Info(err)
- log.Info("forge failed")
- os.Exit(-1)
+ forgeShutdown()
+ me.sh.BadExit("forge failed", err)
}
func newBadExit(msg string, err error) {
- log.Info(err)
- log.Info(msg)
- os.Exit(-1)
+ forgeShutdown()
+ me.sh.BadExit(msg, err)
}
func badRepoExit(repo *gitpb.Repo, err error) {
- log.Printf("%s FAILED: %v\n", repo.GetNamespace(), err)
- os.Exit(-1)
+ forgeShutdown()
+ s := log.Sprintf("%s FAILED: %v", repo.GetNamespace(), err)
+ me.sh.BadExit(s, err)
}
diff --git a/main.go b/main.go
index 9541b95..cd008af 100644
--- a/main.go
+++ b/main.go
@@ -77,6 +77,7 @@ func main() {
if me.sh.Cmd == "" {
s, err := doDefaultBehavior()
+ forgeShutdown()
if err != nil {
me.sh.BadExit(s, err)
}
@@ -154,35 +155,9 @@ func main() {
debug() // sits here forever
}
+ forgeShutdown()
if err != nil {
me.sh.BadExit(s, err)
}
me.sh.GoodExit(s)
}
-
-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
- defaultBehaviorMaster()
- return "default master behavior", nil
- }
-
- // PROBABLY A NEW USER
- found := findAll()
- footer := me.forge.PrintDefaultTB(found)
- return footer, nil
-}