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