2024-01-09 15:34:53 -06:00
|
|
|
package repostatus
|
|
|
|
|
|
|
|
import (
|
2024-01-10 00:15:27 -06:00
|
|
|
"strconv"
|
|
|
|
|
2024-01-09 15:34:53 -06:00
|
|
|
"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")
|
2024-01-09 19:22:16 -06:00
|
|
|
rs.develMerge.Disable()
|
|
|
|
rs.releaseVersion.Disable()
|
2024-01-09 15:34:53 -06:00
|
|
|
rs.populateTags()
|
2024-01-09 19:22:16 -06:00
|
|
|
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")
|
2024-01-10 00:43:15 -06:00
|
|
|
rs.incrementVersion()
|
2024-01-09 19:22:16 -06:00
|
|
|
rs.releaseVersion.Enable()
|
|
|
|
return
|
|
|
|
}
|
2024-01-09 15:34:53 -06:00
|
|
|
log.Warn("Is repo pushed upstream? git.wit.org or github?")
|
|
|
|
})
|
|
|
|
|
2024-01-09 19:22:16 -06:00
|
|
|
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()
|
|
|
|
|
2024-01-10 00:43:15 -06:00
|
|
|
rs.releaseVersion = rs.grid.NewButton("tag and release version", func() {
|
|
|
|
a := rs.major.Get()
|
|
|
|
b := rs.minor.Get()
|
|
|
|
c := rs.revision.Get()
|
|
|
|
newver := a + "." + b + "." + c
|
|
|
|
log.Warn("Should tag version:", newver)
|
2024-01-09 19:22:16 -06:00
|
|
|
})
|
|
|
|
rs.releaseVersion.Disable()
|
|
|
|
|
2024-01-10 00:15:27 -06:00
|
|
|
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")
|
|
|
|
|
2024-01-09 15:34:53 -06:00
|
|
|
rs.grid.Margin()
|
|
|
|
rs.grid.Pad()
|
|
|
|
}
|
2024-01-10 00:15:27 -06:00
|
|
|
|
2024-01-10 00:43:15 -06:00
|
|
|
func (rs *RepoStatus) incrementVersion() {
|
|
|
|
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)
|
2024-01-10 00:15:27 -06:00
|
|
|
|
2024-01-10 00:43:15 -06:00
|
|
|
rs.a, _ = strconv.Atoi(major)
|
|
|
|
rs.b, _ = strconv.Atoi(minor)
|
|
|
|
rs.c, _ = strconv.Atoi(revision)
|
2024-01-10 00:15:27 -06:00
|
|
|
|
2024-01-10 00:43:15 -06:00
|
|
|
rs.major.Add(rs.a)
|
|
|
|
rs.major.Add(rs.a + 1)
|
|
|
|
rs.major.Set(rs.a)
|
2024-01-10 00:15:27 -06:00
|
|
|
|
2024-01-10 00:43:15 -06:00
|
|
|
rs.minor.Add(rs.b)
|
|
|
|
rs.minor.Add(rs.b + 1)
|
|
|
|
rs.minor.Set(rs.b)
|
2024-01-10 00:15:27 -06:00
|
|
|
|
2024-01-10 00:43:15 -06:00
|
|
|
// rs.c := strconv.Atoi(revision)
|
|
|
|
rs.revision.Add(rs.c + 1)
|
|
|
|
rs.revision.Add(rs.c + 2)
|
|
|
|
rs.revision.Set(rs.c + 1)
|
2024-01-10 00:15:27 -06:00
|
|
|
}
|