diff --git a/globalBuildOptions.go b/globalBuildOptions.go index 010021d..041ed32 100644 --- a/globalBuildOptions.go +++ b/globalBuildOptions.go @@ -98,7 +98,7 @@ func globalBuildOptions(box *gui.Node) { me.autoDryRun = group2.NewCheckbox("autotypist --dry-run") me.autoDryRun.SetChecked(true) - group2.NewButton("parse go.sum ScanGitConfig()", func() { + group2.NewButton("parse .git/config ScanGitConfig()", func() { repostatus.ScanGitConfig() }) diff --git a/globalDisplayOptions.go b/globalDisplayOptions.go index c3afcb3..f1e6abb 100644 --- a/globalDisplayOptions.go +++ b/globalDisplayOptions.go @@ -5,6 +5,7 @@ import ( "go.wit.com/gui" "go.wit.com/lib/debugger" "go.wit.com/lib/gui/logsettings" + "go.wit.com/log" // "go.wit.com/gui/gadgets" ) @@ -16,6 +17,17 @@ func globalDisplayOptions(box *gui.Node) { group1.NewButton("Show Repository Window", func() { reposwin.Toggle() }) + group1.NewButton("Create Release Window", func() { + if release.win == nil { + log.Info("Creating the Release Window") + createReleaseWindow() + log.Info("Toggling the Release Window") + release.win.Toggle() + } + log.Info("Toggling the Release Window") + release.win.Toggle() + release.openrepo.Disable() + }) /* group1.NewButton("hide all", func() { for repo, _ := range me.allrepos { diff --git a/main.go b/main.go index 9b01df2..978c908 100644 --- a/main.go +++ b/main.go @@ -4,6 +4,7 @@ package main import ( "embed" "os/user" + "strings" "go.wit.com/log" @@ -35,6 +36,7 @@ func main() { func addRepo(grid *gui.Node, path string, master string, devel string, user string) { newRepo := new(repo) + path = strings.Trim(path, "/") // trim any extranous '/' chars put in the config file by the user if path == "" { log.Warn("addRepo() got empty path", path, master, devel, user) return @@ -67,7 +69,7 @@ func addRepo(grid *gui.Node, path string, master string, devel string, user stri } log.Warn("status window exists. trying TestDraw() here") newRepo.status.Toggle() - newRepo.status.Update() + /// newRepo.status.Update() }) // newRepo.status = repostatus.New(me.myGui, newRepo.path) @@ -77,10 +79,10 @@ func addRepo(grid *gui.Node, path string, master string, devel string, user stri newRepo.status.SetDevelWorkingName(me.develBranch.String()) newRepo.status.SetUserWorkingName(me.userBranch.String()) /* - newRepo.status.SetDevelBranchName(devel) - newRepo.status.SetUserBranchName(user) - newRepo.status.Update() - newRepo.newScan() + newRepo.status.SetDevelBranchName(devel) + newRepo.status.SetUserBranchName(user) + newRepo.status.Update() + newRepo.newScan() */ me.allrepos[newRepo] = path } diff --git a/releaseWindow.go b/releaseWindow.go new file mode 100644 index 0000000..6460f40 --- /dev/null +++ b/releaseWindow.go @@ -0,0 +1,91 @@ +// This is a simple example +package main + +import ( + "go.wit.com/gui" + "go.wit.com/log" + + "go.wit.com/lib/gadgets" +) + +var release releaseStruct + +type releaseStruct struct { + current *repo + + win *gadgets.BasicWindow + box *gui.Node + group *gui.Node + grid *gui.Node + repo *gadgets.OneLiner + status *gadgets.OneLiner + notes *gadgets.OneLiner + + openrepo *gui.Node +} + +func createReleaseWindow() { + if release.win != nil { + release.win.Toggle() + return + } + + release.win = gadgets.NewBasicWindow(me.myGui, "Make a new release") + release.win.Custom = func() { + log.Info("Release Window close") + } + + release.win.Make() + release.win.StandardClose() + release.win.Draw() + release.box = release.win.Box() + release.group = release.box.NewGroup("things") + release.grid = release.group.NewGrid("buildOptions", 2, 1) + + release.grid.NewButton("next repo", func() { + log.Info("find the next repo to release here") + findNextRepo() + }) + + release.openrepo = release.grid.NewButton("open repo", func() { + if release.current == nil { + log.Info("find the next repo first") + return + } + if release.current.status.CheckGoSum() { + log.Info("repo has go.sum requirements that are clean") + release.status.SetValue("CLEAN") + } else { + log.Info("repo has go.sum requirements that are screwed up") + release.status.SetValue("BAD") + } + + // log.Info("find the next repo to release here") + // 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") +} + +func findNextRepo() { + for repo, _ := range me.allrepos { + latestversion := repo.status.GetLastTagVersion() + status := repo.dirtyLabel.String() + if status == "PERFECT" { + continue + } + if repo.status.CheckDirty() { + log.Info("dirty repo:", latestversion, status, repo.status.String()) + 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() + return + } + log.Info("repo:", latestversion, status, repo.status.String()) + } +}