summaryrefslogtreecommitdiff
path: root/releaseBox.go
diff options
context:
space:
mode:
Diffstat (limited to 'releaseBox.go')
-rw-r--r--releaseBox.go108
1 files changed, 13 insertions, 95 deletions
diff --git a/releaseBox.go b/releaseBox.go
index 15f68c8..d31696c 100644
--- a/releaseBox.go
+++ b/releaseBox.go
@@ -2,9 +2,6 @@
package main
import (
- "fmt"
- "time"
-
"go.wit.com/gui"
"go.wit.com/log"
@@ -100,8 +97,6 @@ func createReleaseBox(box *gui.Node) {
me.autoWorkingPwd = gadgets.NewOneLiner(me.release.grid, "working directory (pwd)")
me.release.grid.NextRow()
- // me.userHomePwd = gadgets.NewOneLiner(me.release.grid, "user home")
- // me.release.grid.NextRow()
me.goSrcPwd = gadgets.NewOneLiner(me.release.grid, "go src home")
me.release.grid.NextRow()
@@ -111,108 +106,31 @@ func createReleaseBox(box *gui.Node) {
group := me.release.box.NewGroup("Run on Current Repo")
grid := group.NewGrid("buildOptions", 0, 0)
- grid.NewButton("whitelist", func() {
- // tmp := me.current.GoState()
- if repov := me.repos.View.FindByPath(me.current.GetGoPath()); repov != nil {
- log.Info("trying to whitelist repo", me.current.GetGoPath())
- }
- findNext()
- })
+ /*
+ grid.NewButton("whitelist", func() {
+ })
+ */
grid.NextRow()
- group = me.release.box.NewGroup("Process against all repos")
+ group = me.release.box.NewGroup("Publish until done")
grid = group.NewGrid("buildOptions", 0, 0)
grid.NewButton("doRelease() all", func() {
buttonDisable()
- // rather than loop forever, at least limit this to the number of repos
- // incase something, somewhere, goes wrong
- ok, duration := doReleaseAll()
- s := fmt.Sprint(duration)
- log.Info("release returned", ok, "and ran for", s, "findCounter =", findCounter)
- if !findOk {
- log.Info("doRelease() immediately end something went wrong last time. findOk == false")
- return
- }
- first := findCounter
- if findCounter != 0 {
- log.Info("should try thsi doRelease() loop again since findCounter =", findCounter)
- ok, duration := doReleaseAll()
- s := fmt.Sprint(duration)
- log.Info("release returned", ok, "and ran for", s, "findCounter =", findCounter)
- }
- if !findOk {
- log.Info("doRelease() immediately end something went wrong last time. findOk == false")
- return
- }
- second := findCounter
- log.Info("doReleaseAll() first =", first, "second =", second)
- if first == 0 {
- log.Info("doReleaseAll() first is 0. everything is done. second is", second)
- log.Info("exit() here safely")
- me.forge.ConfigSave()
- printDone()
- okExit("")
- return
- }
-
- if first != second {
- // try a third time
- log.Info("doReleaseAll() first second do not match. findNext()")
- findNext()
- ok, duration := doReleaseAll()
- s := fmt.Sprint(duration)
- log.Info("release returned", ok, "and ran for", s, "findCounter =", findCounter)
- third := findCounter
- log.Info("doReleaseAll() findCounter first =", first, "second =", second, "third =", third)
- if !findOk {
- log.Info("doRelease() immediately end something went wrong last time. findOk == false")
- return
- }
- if (second == 0) && (third == 0) {
- log.Info("doReleaseAll() SaveConfig() here and Exit(0)")
- me.forge.ConfigSave()
- okExit("")
- }
- } else {
- log.Info("doReleaseAll() first second match. something has gone terribly wrong")
- log.Info("killing guireleaser is a bad idea here. it will potentially loose state")
- log.Info("the only way now is to parse 'go list' or ~/go/pkg/mod/<gopath>/go.sum files")
- log.Info("to determine the last known version to make sure everything is redone correctly")
- log.Info("this is the worst case. the better idea is to make sure it never fails")
- log.Info("and restarts correctly where it left off. That might not be possible?")
- log.Info("because 'go get @foo.com/bar@latest' appears to be global and so")
- log.Info("some go.sum files might be correct when some are not actually published")
- log.Info("TODO: is this true or not?")
- }
-
- buttonEnable()
- })
- grid.NextRow()
-}
-
-func doReleaseAll() (bool, time.Duration) {
- var worked bool = true
- findCounter = 0
- duration := repolist.TimeFunction(func() {
- loop := me.repos.View.ReposSortByName()
- for loop.Scan() {
- loop.Repo()
- if !findOk {
- log.Info("doRelease() immediately end something went wrong last time. findOk == false")
- worked = false
+ count := 0
+ for {
+ log.Info("START doRelease() LOOP count =", count, "len me.done =", len(me.done))
+ if err := doRelease(); err != nil {
break
}
- if err := doRelease(); err == nil {
- log.Info("doRelease() worked. findCounter =", findCounter)
- } else {
- log.Info("doRelease() failed. findCounter =", findCounter, err)
- worked = false
+ count += 1
+ if count > 20 {
break
}
}
+ buttonEnable()
})
- return worked, duration
+ grid.NextRow()
}
func buttonDisable() {