autotypist/releaseWindow.go

136 lines
3.4 KiB
Go

// 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")
}