package repostatus import ( "strconv" "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() var major, minor, revision string major, minor, revision = splitVersion(lasttag) log.Warn("Should release version here", lasttag) log.Warn("Should release a,b,c", major, minor, revision) // rs.a = major // rs.b = minor // rs.c = revision rs.a, _ = strconv.Atoi(major) rs.b, _ = strconv.Atoi(minor) rs.c, _ = strconv.Atoi(revision) rs.setCombobox() }) rs.releaseVersion.Disable() rs.vgroup = rs.window.Box().NewGroup("Version") rs.major = gadgets.NewBasicCombobox(rs.grid, "master") rs.minor = gadgets.NewBasicCombobox(rs.grid, "minor") rs.revision = gadgets.NewBasicCombobox(rs.grid, "revision") rs.grid.Margin() rs.grid.Pad() } func (rs *RepoStatus) setCombobox() { addCombobox(rs.major, rs.a) addCombobox(rs.major, rs.a + 1) setCombobox(rs.major, rs.a) addCombobox(rs.minor, rs.b) addCombobox(rs.minor, rs.b + 1) setCombobox(rs.minor, rs.b) // rs.c := strconv.Atoi(revision) rs.revision.Add(strconv.Itoa(rs.c + 1)) rs.revision.Add(strconv.Itoa(rs.c + 2)) } func addCombobox(cb *gadgets.BasicCombobox, i int) { s := strconv.Itoa(i) cb.Add(s) } func setCombobox(cb *gadgets.BasicCombobox, i int) { s := strconv.Itoa(i) cb.Sdd(s) }