diff options
Diffstat (limited to 'releaseBox.go')
| -rw-r--r-- | releaseBox.go | 179 |
1 files changed, 132 insertions, 47 deletions
diff --git a/releaseBox.go b/releaseBox.go index f6f281e..9db31e1 100644 --- a/releaseBox.go +++ b/releaseBox.go @@ -5,6 +5,7 @@ import ( "fmt" "os" "path/filepath" + "strings" "go.wit.com/gui" "go.wit.com/log" @@ -49,44 +50,20 @@ type releaseStruct struct { } func (w *autoType) Disable() { - // w.mainWindow.Disable() - release.box.Disable() - // buttonDisable() + me.mainBox.Disable() } func (w *autoType) Enable() { - // w.mainWindow.Enable() - release.box.Enable() - // buttonEnable() + me.mainBox.Enable() } func createReleaseBox(box *gui.Node) { initWhitelist() - release.box = box + // release.box = box + release.box = box.NewVerticalBox("vbox") release.group = release.box.NewGroup("Current Repo") release.grid = release.group.NewGrid("buildOptions", 0, 0) - - // do an initial scan of all the repos - scanGoSum() - - release.grid.NewButton("scan for Ready", func() { - me.Disable() - scanForReady() - me.Enable() - }) - release.grid.NewButton("findNextDirty()", func() { - me.Disable() - defer me.Enable() - if findNextDirty("PRIMATIVE") { - log.Info("findNextDirty() found a repo") - return - } - if findNextDirty("") { - log.Info("findNextDirty() found a repo") - return - } - }) release.grid.NextRow() release.releaseVersionB = release.grid.NewButton("release version", func() { @@ -142,35 +119,26 @@ func createReleaseBox(box *gui.Node) { panic("redo go.sum") } - release.grid.NewButton("Check Ready", func() { - buttonDisable() - defer buttonEnable() - goSumS := release.current.GoState() - dirtyS := release.current.State() - lastS := release.current.LastTag() - if CheckReady() { - log.Info("repo is ready", release.current.Name(), goSumS, dirtyS, lastS) - return - } else { - log.Info("\trepo is not ready", release.current.Name(), goSumS, dirtyS, lastS) - } - }) + group := release.box.NewGroup("Run on Current Repo") + grid := group.NewGrid("buildOptions", 0, 0) - release.grid.NewButton("set ignore", func() { + grid.NewButton("set to IGNORE", func() { tmp := release.current.GoState() log.Info("trying to set repo IGNORE is now =", tmp) release.current.SetGoState("IGNORE") release.whitelist[release.current.GoPath()] = release.current }) - release.checkGoSumB = release.grid.NewButton("checkValidGoSum()", func() { + release.checkGoSumB = grid.NewButton("checkValidGoSum()", func() { buttonDisable() checkValidGoSum(release.current) buttonEnable() }) - release.grid.NextRow() + grid.NextRow() - release.grid.NewButton("release all", func() { + group = release.box.NewGroup("Process against all repos") + grid = group.NewGrid("buildOptions", 0, 0) + grid.NewButton("release all", func() { var worked bool = true buttonDisable() // rather than loop forever, at least limit this to the number of repos @@ -196,7 +164,124 @@ func createReleaseBox(box *gui.Node) { log.Info("release returned", worked, "and ran for", s) buttonEnable() }) - release.grid.NextRow() + + grid.NewButton("find first repo", func() { + // set the target versions + setTargetVersion() + + // have to run this twice for now. not sure why + // this is old + scanForReady() + scanForReady() + + findNextDirty("") + }) + + grid.NewButton("Check Ready", func() { + buttonDisable() + defer buttonEnable() + goSumS := release.current.GoState() + dirtyS := release.current.State() + lastS := release.current.LastTag() + if CheckReady() { + log.Info("repo is ready", release.current.Name(), goSumS, dirtyS, lastS) + return + } else { + log.Info("\trepo is not ready", release.current.Name(), goSumS, dirtyS, lastS) + } + }) + grid.NewButton("scan for Ready", func() { + me.Disable() + scanForReady() + me.Enable() + }) + grid.NewButton("findNextDirty()", func() { + me.Disable() + defer me.Enable() + if findNextDirty("PRIMATIVE") { + log.Info("findNextDirty() found a repo") + return + } + if findNextDirty("") { + log.Info("findNextDirty() found a repo") + return + } + }) + grid.NextRow() + + group = release.box.NewGroup("experimental and dangerous stuff") + grid = group.NewGrid("buildOptions", 0, 0) + grid.NewButton("rm -f go.mod go.sum", func() { + me.Disable() + for _, repo := range me.repos.View.AllRepos() { + if whitelist(repo.GoPath()) { + continue + } + if repo.Status.ReadOnly() { + continue + } + repo.Status.RunCmd([]string{"rm", "-f", "go.mod", "go.sum"}) + } + me.Enable() + }) + + grid.NewButton("git reset --hard", func() { + me.Disable() + for _, repo := range me.repos.View.AllRepos() { + if whitelist(repo.GoPath()) { + log.Warn("skipping whitelist", repo.Name()) + continue + } + log.Warn("running git reset --hard", repo.Name()) + repo.Status.RunCmd([]string{"git", "reset", "--hard"}) + } + me.Enable() + }) + + grid.NewButton("git ls-files |grep go.mod", func() { + // var all []string + for _, repo := range me.repos.View.AllRepos() { + log.Info("repo:", repo.Name()) + if repo.Status.ReadOnly() { + continue + } + if whitelist(repo.GoPath()) { + log.Warn("skipping whitelist", repo.GoPath()) + continue + } + good, files := repo.Status.GitLsFiles() + if !good { + log.Warn("Something went wrong", repo.GoPath()) + continue + } + for _, filename := range strings.Split(files, "\n") { + log.Info("\tfile", filename) + if filename == "go.mod" { + log.Info("Found go.mod. does version match release version?") + log.Info(repo.Status.GetLastTagVersion(), "vs", repo.Status.GetTargetVersion()) + if repo.Status.GetLastTagVersion() != repo.Status.GetTargetVersion() { + log.Info(repo.Status.GetLastTagVersion(), "vs", repo.Status.GetTargetVersion()) + log.Info("Found go.sum. version mismatch") + setCurrentRepo(repo, "VERY BROKEN", "rewind go.mod commit") + return + } + } + if filename == "go.sum" { + log.Info("Found go.sum. does version match release version?") + log.Info(repo.Status.GetLastTagVersion(), "vs", repo.Status.GetTargetVersion()) + if repo.Status.GetLastTagVersion() != repo.Status.GetTargetVersion() { + log.Info(repo.Status.GetLastTagVersion(), "vs", repo.Status.GetTargetVersion()) + log.Info("Found go.sum. version mismatch") + setCurrentRepo(repo, "VERY BROKEN", "rewind go.mod commit") + return + } + } + } + } + log.Info("All repos seem okay") + }) + grid.NextRow() + } func buttonDisable() { @@ -251,7 +336,7 @@ func findNextDirty(onlyKind string) bool { for _, repo := range me.repos.View.AllRepos() { goSumS := repo.GoState() - if repo.Status.GetTargetVersion() == repo.Status.GetCurrentVersion() { + if repo.Status.IsReleased() { continue } if goSumS == "WHITELIST" { |
