From 17e1a099c44583aa372218b5e14724ce4a38048b Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Fri, 9 Feb 2024 11:50:16 -0600 Subject: [PATCH] start looping releases Signed-off-by: Jeff Carr --- checkReady.go | 1 - doRelease.go | 131 +++++++++++++++++++++++++++++++++++++++ globalDisplayOptions.go | 2 - main.go | 15 +++-- quickCmd.go | 4 +- releaseWindow.go | 133 +++++++--------------------------------- 6 files changed, 164 insertions(+), 122 deletions(-) create mode 100644 doRelease.go diff --git a/checkReady.go b/checkReady.go index 3cef23b..1c4757b 100644 --- a/checkReady.go +++ b/checkReady.go @@ -1,4 +1,3 @@ -// This is a simple example package main import ( diff --git a/doRelease.go b/doRelease.go new file mode 100644 index 0000000..2ff444f --- /dev/null +++ b/doRelease.go @@ -0,0 +1,131 @@ +// This is a simple example +package main + +import ( + "os" + "strings" + + "go.wit.com/log" +) + +func doRelease() bool { + if release.releaseVersionB.String() != "release version "+release.version.String() { + log.Warn("something went wrong with the release.version:", release.version.String()) + return false + } + if strings.HasPrefix(release.version.String(), "v") { + log.Warn("everything is ok. version starts with v.", release.version.String()) + } else { + log.Warn("version does not start with v.", release.version.String()) + return false + } + switch release.status.String() { + case "PRIMATIVE": + log.Warn("can do PRIMATIVE", release.version.String()) + case "GOOD": + log.Warn("GOOD. lots of go.sum checks passed", release.version.String()) + case "manually chosen": + log.Warn("attempting manual release", release.version.String()) + case "NOT READY": + log.Warn("attempting to release. TODO: recheck go.sum here", release.version.String()) + log.Warn("Sleep 10") + log.Sleep(10) + case "UNRELEASED": + log.Warn("attempting to release. TODO: dig deep on go.sum here", release.version.String()) + log.Warn("Sleep 10") + log.Sleep(10) + default: + log.Warn("what is this?", release.version.String(), release.status.String()) + return false + } + + if release.current.status.ReadOnly() { + log.Info("sorry, it's read-only") + return true + } + if release.current.status.CheckDirty() { + log.Info("sorry, it's still dirty") + return false + } + + curName := release.current.status.GetCurrentBranchName() + mName := release.current.status.GetMasterBranchName() + if curName != mName { + log.Info("\trepo is not working from main branch", curName, "!=", mName) + return false + } + + log.Info("\ttag and push", curName, release.version.String(), me.releaseReasonS) + + var all [][]string + all = append(all, []string{"git", "add", "-f", "go.mod"}) + if release.current.status.CheckPrimativeGoMod() { + // don't add go.sum here. TODO: check for go.sum file and fail + } else { + all = append(all, []string{"git", "add", "-f", "go.sum"}) + } + all = append(all, []string{"git", "commit", "-m", me.releaseReasonS}) + all = append(all, []string{"git", "push"}) + all = append(all, []string{"git", "tag", "-m", me.releaseReasonS, release.version.String()}) + all = append(all, []string{"git", "push", "origin", release.version.String()}) + + if doAll(release.current, all) { + log.Info("EVERYTHING OK") + + gopath := release.current.String() + cmd := []string{"go", "get", "-v", gopath + "@" + release.version.String()} + log.Info("SHOULD RUN cmd HERE:", cmd) + + if release.guireleaser == nil { + log.Info("CAN NOT SELF UPDATE HERE. cmd =", cmd) + return false + } else { + os.Unsetenv("GO111MODULE") + log.Info("TRYING TO SELF UPDATE HERE. cmd =", cmd) + err, out := release.guireleaser.status.RunCmd(cmd) + if gopath == "go.wit.com/apps/guireleaser" { + // ignore errors on updating myself + log.Info("IGNORE SELF UPDATE ERROR. cmd =", cmd) + err = nil + } + if err == nil { + log.Info("SELF UPDATE OK. out =", out) + log.Info("SELF UPDATE WORKED") + release.current.setGoSumStatus("RELEASED") + + release.current.status.UpdateCurrent() + // repo.newScan() + cbname := release.current.status.GetCurrentBranchName() + cbversion := release.current.status.GetCurrentBranchVersion() + lasttag := release.current.status.GetLastTagVersion() + release.current.lastTag.SetLabel(lasttag) + release.current.vLabel.SetLabel(cbname + " " + cbversion) + + // scan for new repo + if findNextDirty("") { + log.Info("findNextDirty() found something") + } else { + log.Info("findNextDirty() could not find anything") + return false + } + release.current.status.CheckSafeGoSumRemake() + release.current.status.MakeRedomod() + if ok, _ := release.current.status.CheckGoSum(); ok { + log.Info("repo has go.sum requirements that are clean") + // release.current.setGoSumStatus("CLEAN") + release.status.SetValue("GOOD") + release.notes.SetValue("CheckGoSum() does not seem to lie") + return true + } else { + return false + } + } else { + log.Info("SELF UPDATE FAILED err =", err) + log.Info("SELF UPDATE FAILED out =", out) + return false + } + } + } + log.Info("doAll() failed") + return false +} diff --git a/globalDisplayOptions.go b/globalDisplayOptions.go index f12d000..9ca43e5 100644 --- a/globalDisplayOptions.go +++ b/globalDisplayOptions.go @@ -1,4 +1,3 @@ -// This is a simple example package main import ( @@ -9,7 +8,6 @@ import ( "go.wit.com/lib/debugger" "go.wit.com/lib/gui/logsettings" "go.wit.com/log" - // "go.wit.com/gui/gadgets" ) func showHideRepos() { diff --git a/main.go b/main.go index 8a0756a..46d208a 100644 --- a/main.go +++ b/main.go @@ -1,4 +1,3 @@ -// This is a simple example package main import ( @@ -7,11 +6,15 @@ import ( "strings" "time" - "go.wit.com/log" - "go.wit.com/gui" + "go.wit.com/log" ) +// TODO: autocompute these in the gui +var releaseReasonS string = "dropdown fixes" +var releaseVersion string = "0.20.2" +var widgetVersion string = "1.1.17" + //go:embed resources/* var resToolkit embed.FS @@ -30,16 +33,16 @@ func main() { repoworld() - me.releaseReasonS = "checkbox fixes" + me.releaseReasonS = releaseReasonS for _, repo := range me.allrepos { repo.status.UpdateCurrent() repo.newScan() if repo.String() == "go.wit.com/widget" { - repo.targetVersion.SetText("v" + "1.1.16") + repo.targetVersion.SetText("v" + widgetVersion) } else { - repo.targetVersion.SetText("v" + "0.20.1") + repo.targetVersion.SetText("v" + releaseVersion) } if strings.HasPrefix(repo.String(), "go.wit.com/dev/") { lasttag := repo.status.GetLastTagVersion() diff --git a/quickCmd.go b/quickCmd.go index 2f250af..a1e8b8e 100644 --- a/quickCmd.go +++ b/quickCmd.go @@ -1,12 +1,10 @@ -// This is a simple example package main import ( "os" - "go.wit.com/log" - "go.wit.com/lib/gui/repostatus" + "go.wit.com/log" ) func doesExist(path string) bool { diff --git a/releaseWindow.go b/releaseWindow.go index 0af24f5..41f75af 100644 --- a/releaseWindow.go +++ b/releaseWindow.go @@ -4,7 +4,6 @@ package main import ( "os" "path/filepath" - "strings" "go.wit.com/gui" "go.wit.com/log" @@ -86,119 +85,14 @@ func createReleaseBox(box *gui.Node) { return } }) + release.releaseVersionB = release.grid.NewButton("release version", func() { buttonDisable() - if release.releaseVersionB.String() != "release version "+release.version.String() { - log.Warn("something went wrong with the release.version:", release.version.String()) - return - } - if strings.HasPrefix(release.version.String(), "v") { - log.Warn("everything is ok. version starts with v.", release.version.String()) - } else { - log.Warn("version does not start with v.", release.version.String()) - return - } - switch release.status.String() { - case "PRIMATIVE": - log.Warn("can do PRIMATIVE", release.version.String()) - case "GOOD": - log.Warn("GOOD. lots of go.sum checks passed", release.version.String()) - case "manually chosen": - log.Warn("attempting manual release", release.version.String()) - case "NOT READY": - log.Warn("attempting to release. TODO: recheck go.sum here", release.version.String()) - log.Warn("Sleep 10") - log.Sleep(10) - case "UNRELEASED": - log.Warn("attempting to release. TODO: dig deep on go.sum here", release.version.String()) - log.Warn("Sleep 10") - log.Sleep(10) - default: - log.Warn("what is this?", release.version.String(), release.status.String()) - return - } - - if release.current.status.ReadOnly() { - log.Info("sorry, it's read-only") - return - } - if release.current.status.CheckDirty() { - log.Info("sorry, it's still dirty") - return - } - - curName := release.current.status.GetCurrentBranchName() - mName := release.current.status.GetMasterBranchName() - if curName != mName { - log.Info("\trepo is not working from main branch", curName, "!=", mName) - return - } - - log.Info("\ttag and push", curName, release.version.String(), me.releaseReasonS) - - var all [][]string - all = append(all, []string{"git", "add", "-f", "go.mod"}) - if release.current.status.CheckPrimativeGoMod() { - // don't add go.sum here. TODO: check for go.sum file and fail - } else { - all = append(all, []string{"git", "add", "-f", "go.sum"}) - } - all = append(all, []string{"git", "commit", "-m", me.releaseReasonS}) - all = append(all, []string{"git", "push"}) - all = append(all, []string{"git", "tag", "-m", me.releaseReasonS, release.version.String()}) - all = append(all, []string{"git", "push", "origin", release.version.String()}) - - if doAll(release.current, all) { - log.Info("EVERYTHING OK") - - gopath := release.current.String() - cmd := []string{"go", "get", "-v", gopath + "@" + release.version.String()} - log.Info("SHOULD RUN cmd HERE:", cmd) - - if release.guireleaser == nil { - log.Info("CAN NOT SELF UPDATE HERE. cmd =", cmd) - return - } else { - os.Unsetenv("GO111MODULE") - log.Info("TRYING TO SELF UPDATE HERE. cmd =", cmd) - err, out := release.guireleaser.status.RunCmd(cmd) - if gopath == "go.wit.com/apps/guireleaser" { - // ignore errors on updating myself - log.Info("IGNORE SELF UPDATE ERROR. cmd =", cmd) - err = nil - } - if err == nil { - log.Info("SELF UPDATE OK. out =", out) - log.Info("SELF UPDATE WORKED") - release.current.setGoSumStatus("RELEASED") - - release.current.status.UpdateCurrent() - // repo.newScan() - cbname := release.current.status.GetCurrentBranchName() - cbversion := release.current.status.GetCurrentBranchVersion() - lasttag := release.current.status.GetLastTagVersion() - release.current.lastTag.SetLabel(lasttag) - release.current.vLabel.SetLabel(cbname + " " + cbversion) - - // scan for new repo - findNextDirty("") - release.current.status.CheckSafeGoSumRemake() - release.current.status.MakeRedomod() - if ok, _ := release.current.status.CheckGoSum(); ok { - log.Info("repo has go.sum requirements that are clean") - // release.current.setGoSumStatus("CLEAN") - release.status.SetValue("GOOD") - release.notes.SetValue("CheckGoSum() does not seem to lie") - } - } else { - log.Info("SELF UPDATE FAILED err =", err) - log.Info("SELF UPDATE FAILED out =", out) - return - } - } + if doRelease() { buttonEnable() + log.Info("doRelease() worked") } else { - log.Info("SOMETHING FAILED") + log.Info("doRelease() failed") } }) @@ -341,6 +235,24 @@ func createReleaseBox(box *gui.Node) { } buttonEnable() }) + + release.grid.NewButton("release(5)", func() { + buttonDisable() + for n := 0; n <= 5; n++ { + if doRelease() { + log.Info("doRelease() worked") + } else { + if release.status.String() == "ALL DONE?" { + log.Info("maybe ALL DONE?") + buttonEnable() + return + } + log.Info("doRelease() failed") + return + } + } + buttonEnable() + }) } func goodCheckGoSum() bool { @@ -571,6 +483,7 @@ func findNextDirty(onlyKind string) bool { } } log.Info("tried to findNextDirty() but not sure what to do next") + release.status.SetValue("ALL DONE?") return false }