guireleaser/releaseBox.go

145 lines
3.5 KiB
Go

// This is a simple example
package main
import (
"go.wit.com/gui"
"go.wit.com/log"
"go.wit.com/lib/gadgets"
"go.wit.com/lib/gui/repolist"
)
type releaseStruct struct {
box *gui.Node
group *gui.Node
grid *gui.Node
repo *gadgets.OneLiner
status *gadgets.OneLiner
readOnly *gadgets.OneLiner
notes *gadgets.OneLiner
version *gadgets.OneLiner
releaseVersionB *gui.Node
reason *gadgets.BasicEntry
openrepo *gui.Node
goGetB *gui.Node
checkGoSumB *gui.Node
checkDirtyB *gui.Node
sendVersionB *gui.Node
checkSafeB *gui.Node
whitelist map[string]*repolist.RepoRow
}
func (w *autoType) Disable() {
me.mainBox.Disable()
}
func (w *autoType) Enable() {
me.mainBox.Enable()
}
func createReleaseBox(box *gui.Node) {
me.release.box = box.NewVerticalBox("vbox")
me.release.group = me.release.box.NewGroup("Current Repo")
me.release.grid = me.release.group.NewGrid("buildOptions", 0, 0)
me.release.grid.NextRow()
me.release.releaseVersionB = me.release.grid.NewButton("release version", func() {
buttonDisable()
if err := doRelease(); err == nil {
buttonEnable()
log.Info("doRelease() worked")
} else {
log.Info("doRelease() failed", err, me.current.GetGoPath())
}
})
me.release.grid.NewButton("Find Next", func() {
me.Disable()
defer me.Enable()
if findNext() {
log.Info("findNext() found a repo")
return
}
})
me.release.grid.NewButton("Show Next", func() {
check := me.current
if check == nil {
log.Info("boo, current is missing", me.current.GetGoPath())
return
}
testGoRepo(check)
me.forge.HumanPrintRepo(check)
})
me.release.grid.NextRow()
me.release.repo = gadgets.NewOneLiner(me.release.grid, "repo")
me.release.openrepo = me.release.grid.NewButton("Configure", func() {
if repov := me.repos.View.FindByPath(me.current.GetGoPath()); repov != nil {
repov.Status.Toggle()
}
})
me.release.openrepo.Disable()
me.release.grid.NextRow()
me.release.status = gadgets.NewOneLiner(me.release.grid, "status")
me.release.grid.NextRow()
me.release.readOnly = gadgets.NewOneLiner(me.release.grid, "read-only")
me.release.grid.NextRow()
me.release.notes = gadgets.NewOneLiner(me.release.grid, "notes")
me.release.grid.NextRow()
me.release.version = gadgets.NewOneLiner(me.release.grid, "version")
me.release.grid.NextRow()
me.release.reason = gadgets.NewBasicEntry(me.release.grid, "release reason")
me.release.reason.SetText(me.releaseReasonS)
me.release.grid.NextRow()
me.autoWorkingPwd = gadgets.NewOneLiner(me.release.grid, "working directory (pwd)")
me.release.grid.NextRow()
me.goSrcPwd = gadgets.NewOneLiner(me.release.grid, "go src home")
me.release.grid.NextRow()
// me.userHomePwd.SetText(homeDir)
me.goSrcPwd.SetText(me.forge.GetGoSrc())
group := me.release.box.NewGroup("Run on Current Repo")
grid := group.NewGrid("buildOptions", 0, 0)
/*
grid.NewButton("whitelist", func() {
})
*/
grid.NextRow()
group = me.release.box.NewGroup("Publish until done")
grid = group.NewGrid("buildOptions", 0, 0)
grid.NewButton("doRelease() all", func() {
buttonDisable()
count := 0
for {
log.Info("START doRelease() LOOP count =", count, "len me.done =", len(me.done))
if err := doRelease(); err != nil {
break
}
count += 1
if count > 20 {
break
}
}
buttonEnable()
})
grid.NextRow()
}
func buttonDisable() {
me.Disable()
me.release.box.Disable()
}
func buttonEnable() {
me.Enable()
me.release.box.Enable()
}