// 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 version *gadgets.OneLiner reason *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) // 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() }) 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") 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.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 { goSumS := repo.goSumStatus.String() dirtyS := repo.dirtyLabel.String() log.Info("repo", repo.String(), goSumS, dirtyS) if goSumS == "IGNORE" { continue } // latestversion := repo.status.GetLastTagVersion() if goSumS == "CLEAN" { if dirtyS == "PERFECT" { continue } release.repo.SetValue(repo.status.String()) 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("tried to find() but not sure what to do next") }