From f2ad6d3138ce39e6fdd0508eeddd2439ad275f3c Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Wed, 24 Jan 2024 02:41:34 -0600 Subject: [PATCH] more attempts at release automation Signed-off-by: Jeff Carr --- globalDisplayOptions.go | 2 +- main.go | 4 ++- releaseWindow.go | 74 ++++++++++++++++++++++++++++++++--------- scan.go | 49 +++++++++++++++++++++++++++ structs.go | 1 + 5 files changed, 113 insertions(+), 17 deletions(-) diff --git a/globalDisplayOptions.go b/globalDisplayOptions.go index f1e6abb..a694958 100644 --- a/globalDisplayOptions.go +++ b/globalDisplayOptions.go @@ -41,7 +41,7 @@ func globalDisplayOptions(box *gui.Node) { }) */ - me.autoHidePerfect = group1.NewCheckbox("Hide Perfectly clean repos").SetChecked(true) + me.autoHidePerfect = group1.NewCheckbox("Hide Perfectly clean repos").SetChecked(false) me.autoHidePerfect.Custom = func() { if me.autoHidePerfect.Checked() { for repo, _ := range me.allrepos { diff --git a/main.go b/main.go index 978c908..84407af 100644 --- a/main.go +++ b/main.go @@ -59,6 +59,7 @@ func addRepo(grid *gui.Node, path string, master string, devel string, user stri newRepo.userVersion = grid.NewLabel("").SetProgName("userVersion") newRepo.dirtyLabel = grid.NewLabel("") + newRepo.goSumStatus = grid.NewLabel("?") newRepo.vLabel = grid.NewLabel("").SetProgName("current") @@ -111,7 +112,7 @@ func repoworld() { } reposgroup = reposbox.NewGroup("go repositories (read from ~/.config/myrepolist)") - reposgrid = reposgroup.NewGrid("test", 8, 1) + reposgrid = reposgroup.NewGrid("test", 9, 1) reposgrid.NewLabel("") // path goes here @@ -122,6 +123,7 @@ func repoworld() { reposgrid.NewLabel("user version") reposgrid.NewLabel("Status") + reposgrid.NewLabel("go.sum") reposgrid.NewLabel("Current Version").SetProgName("Current Version") diff --git a/releaseWindow.go b/releaseWindow.go index 6460f40..2545cb3 100644 --- a/releaseWindow.go +++ b/releaseWindow.go @@ -13,13 +13,15 @@ var release releaseStruct type releaseStruct struct { current *repo - win *gadgets.BasicWindow - box *gui.Node - group *gui.Node - grid *gui.Node - repo *gadgets.OneLiner + win *gadgets.BasicWindow + box *gui.Node + group *gui.Node + grid *gui.Node + repo *gadgets.OneLiner status *gadgets.OneLiner - notes *gadgets.OneLiner + notes *gadgets.OneLiner + version *gadgets.OneLiner + reason *gadgets.OneLiner openrepo *gui.Node } @@ -42,6 +44,9 @@ func createReleaseWindow() { release.group = release.box.NewGroup("things") release.grid = release.group.NewGrid("buildOptions", 2, 1) + // do an initial scan of all the repos + scanGoSum() + release.grid.NewButton("next repo", func() { log.Info("find the next repo to release here") findNextRepo() @@ -55,37 +60,76 @@ func createReleaseWindow() { if release.current.status.CheckGoSum() { log.Info("repo has go.sum requirements that are clean") release.status.SetValue("CLEAN") + release.current.goSumStatus.SetValue("CLEAN") } else { log.Info("repo has go.sum requirements that are screwed up") release.status.SetValue("BAD") + release.current.goSumStatus.SetValue("BAD") + } + release.current.status.Update() + release.current.newScan() + + if release.current.dirtyLabel.String() == "PERFECT" { + return } // log.Info("find the next repo to release here") - // release.current.status.Toggle() + release.current.status.Toggle() }) release.openrepo.Disable() release.repo = gadgets.NewOneLiner(release.grid, "repo") release.status = gadgets.NewOneLiner(release.grid, "status") release.notes = gadgets.NewOneLiner(release.grid, "notes") + + release.version = gadgets.NewOneLiner(release.grid, "version") + release.version.SetValue("0.13.11") + + release.reason = gadgets.NewOneLiner(release.grid, "reason") + release.reason.SetValue("release automation") + + release.grid.NewButton("send version", func() { + log.Info("set version()") + release.current.status.SetVersion("0", "13", "11", "release automation") + }) + release.grid.NewButton("set ignore", func() { + tmp := release.current.goSumStatus.String() + log.Info("trying to set repo IGNORE is now =", tmp) + release.current.goSumStatus.SetValue("IGNORE") + release.current.goSumStatus.SetLabel("IGNORE") + release.current.goSumStatus.SetText("IGNORE") + }) } func findNextRepo() { for repo, _ := range me.allrepos { - latestversion := repo.status.GetLastTagVersion() - status := repo.dirtyLabel.String() - if status == "PERFECT" { + goSumS := repo.goSumStatus.String() + dirtyS := repo.dirtyLabel.String() + + log.Info("repo", repo.String(), goSumS, dirtyS) + if goSumS == "IGNORE" { continue } - if repo.status.CheckDirty() { - log.Info("dirty repo:", latestversion, status, repo.status.String()) + // latestversion := repo.status.GetLastTagVersion() + if goSumS == "CLEAN" { + if dirtyS == "PERFECT" { + continue + } release.repo.SetValue(repo.status.String()) - release.status.SetValue("dirty") - release.notes.SetValue("You must commit your changes\nbefore you can continue") + release.status.SetValue("clean") + release.notes.SetValue("check manually") + release.current = repo + release.openrepo.Enable() + return + } + if goSumS == "DIRTY" { + release.repo.SetValue(repo.status.String()) + release.status.SetValue("dirty") + release.notes.SetValue("commit changes") release.current = repo release.openrepo.Enable() return } - log.Info("repo:", latestversion, status, repo.status.String()) } + log.Info("tried to find() but not sure what to do next") } diff --git a/scan.go b/scan.go index de5e07f..8492900 100644 --- a/scan.go +++ b/scan.go @@ -73,3 +73,52 @@ func (r *repo) getStatus() string { log.Warn("Branches are not Perfect") return "merge" } + +func scanGoSum() { + for repo, _ := range me.allrepos { + latestversion := repo.status.GetLastTagVersion() + if repo.goSumStatus.String() == "BAD" { + continue + } + if repo.goSumStatus.String() == "DIRTY" { + continue + } + if repo.status.CheckDirty() { + log.Info("dirty repo:", latestversion, repo.status.String()) + log.Info("dirty repo.goSumStatus =", repo.goSumStatus.String()) + repo.goSumStatus.SetLabel("DIRTY") + + // release.repo.SetValue(repo.status.String()) + // release.status.SetValue("dirty") + // release.notes.SetValue("You must commit your changes\nbefore you can continue") + // release.current = repo + // release.openrepo.Enable() + continue + } + if repo.status.CheckGoSum() { + log.Info("repo has go.sum requirements that are clean") + repo.goSumStatus.SetLabel("CLEAN") + } else { + log.Info("repo has go.sum requirements that are screwed up") + repo.goSumStatus.SetLabel("BAD") + + // release.repo.SetValue(repo.status.String()) + // release.status.SetValue("bad") + // release.notes.SetValue("the go.sum file is wrong") + // release.current = repo + // release.openrepo.Enable() + continue + } + status := repo.dirtyLabel.String() + if status == "PERFECT" { + continue + } else { + repo.status.Update() + repo.newScan() + } + + // log.Info("find the next repo to release here") + log.Info("repo:", latestversion, status, repo.status.String()) + } + log.Info("scan() did everything, not sure what to do next") +} diff --git a/structs.go b/structs.go index 25d819e..c0d9d11 100644 --- a/structs.go +++ b/structs.go @@ -71,6 +71,7 @@ type repo struct { lastTag *gui.Node // last tagged version label vLabel *gui.Node // version label dirtyLabel *gui.Node // git state (dirty or not?) + goSumStatus *gui.Node // what is the state of the go.sum file // masterName *gui.Node // the master branch name masterVersion *gui.Node // the master branch version