package repostatus import ( "go.wit.com/log" "go.wit.com/gui/gadgets" ) // creates the actual widgets. // it's assumed you are always passing in a box func draw(rs *RepoStatus) { if ! rs.Ready() {return} rs.group = rs.window.Box().NewGroup("What GO Knows It Has") rs.grid = rs.group.NewGrid("gridnuts", 2, 2) rs.grid.SetNext(1,1) rs.path = gadgets.NewOneLiner(rs.grid, "path") rs.currentBranch = gadgets.NewOneLiner(rs.grid, "branch") rs.lasttag = gadgets.NewOneLiner(rs.grid, "last tag") rs.currentVersion = gadgets.NewOneLiner(rs.grid, "Version") rs.grid.NewLabel("tags") rs.tagsDrop = rs.grid.NewDropdown("tags") rs.masterBranch = gadgets.NewOneLiner(rs.grid, "master") rs.develBranch = gadgets.NewOneLiner(rs.grid, "devel") rs.jcarrBranch = gadgets.NewOneLiner(rs.grid, "jcarr") rs.dirtyLabel = gadgets.NewOneLiner(rs.grid, "dirty") rs.speed = gadgets.NewOneLiner(rs.grid, "refresh speed =") rs.speedActual = gadgets.NewOneLiner(rs.grid, "speed actual =") rs.grid.NewButton("update", func() { rs.Update() }) rs.grid.NewButton("recommend", func() { log.Warn("Is repo dirty?", rs.dirtyLabel.Get()) log.Warn("list the known tags") rs.develMerge.Disable() rs.releaseVersion.Disable() rs.populateTags() log.Warn("Does devel == jcarr?", rs.develBranch.Get(), rs.jcarrBranch.Get()) if rs.develBranch.Get() != rs.jcarrBranch.Get() { log.Warn("devel does not equal jcarr") log.Warn("merge or squash?") return } log.Warn("Does master == devel? ", rs.masterBranch.Get(), rs.develBranch.Get()) if rs.masterBranch.Get() != rs.develBranch.Get() { log.Warn("master does not equal devel. merge devel into master") rs.develMerge.Enable() return } rs.getLastTagVersion() if rs.lasttag.Get() != rs.masterBranch.Get() { log.Warn("master does not equal last tag") rs.releaseVersion.Enable() return } log.Warn("Is repo pushed upstream? git.wit.org or github?") }) rs.develMerge = rs.grid.NewButton("merge devel to master", func() { rs.checkoutBranch("master") if rs.getCurrentBranchName() != "master" { log.Warn("something went wrong switching to the master branch. full stop!") return } log.Warn("Should merge devel into master here") out := run(rs.repopath, "git", "merge devel") log.Warn("devel is merged? merginess is complete. perhaps", out) rs.develMerge.Disable() // don't let this run twice for now }) rs.develMerge.Disable() rs.releaseVersion = rs.grid.NewButton("release version", func() { lasttag := rs.lasttag.Get() ver := normalizeVersion(lasttag) log.Warn("Should release version here", lasttag, ver) }) rs.releaseVersion.Disable() rs.grid.Margin() rs.grid.Pad() }