234 lines
6.3 KiB
Go
234 lines
6.3 KiB
Go
package main
|
|
|
|
import (
|
|
"os"
|
|
"strings"
|
|
|
|
"go.wit.com/gui"
|
|
"go.wit.com/lib/debugger"
|
|
"go.wit.com/lib/gui/logsettings"
|
|
"go.wit.com/log"
|
|
)
|
|
|
|
func globalDisplayOptions(box *gui.Node) {
|
|
vbox := box.NewVerticalBox("DISPLAYVBOX")
|
|
|
|
group1 := vbox.NewGroup("Global Display Options")
|
|
|
|
hidegrid := group1.NewGrid("hidecfg", 0, 0)
|
|
|
|
hidegrid.NewButton("Show Repository Window", func() {
|
|
if me.repos.Hidden() {
|
|
me.repos.Show()
|
|
} else {
|
|
me.repos.Hide()
|
|
}
|
|
log.Info("showing reposwin")
|
|
})
|
|
hidegrid.NextRow()
|
|
|
|
me.autoHideReadOnly = hidegrid.NewCheckbox("Hide read-only repos").SetChecked(true)
|
|
me.autoHideReadOnly.Custom = func() {
|
|
if me.autoHideReadOnly.Checked() {
|
|
os.Setenv("AUTOTYPIST_READONLY", "hide")
|
|
} else {
|
|
os.Unsetenv("AUTOTYPIST_READONLY")
|
|
}
|
|
}
|
|
os.Setenv("AUTOTYPIST_READONLY", "hide")
|
|
hidegrid.NextRow()
|
|
|
|
me.autoHideReleased = hidegrid.NewCheckbox("Hide Released repos").SetChecked(true)
|
|
hidegrid.NextRow()
|
|
|
|
me.ignoreWhitelist = hidegrid.NewCheckbox("ignore whitelist (are you sure?)").SetChecked(false)
|
|
hidegrid.NextRow()
|
|
|
|
me.scanEveryMinute = hidegrid.NewCheckbox("Scan every minute").SetChecked(false)
|
|
me.scanEveryMinute.Custom = func() {
|
|
if me.scanEveryMinute.Checked() {
|
|
os.Setenv("REPO_AUTO_SCAN", "true")
|
|
log.Info("env REPO_AUTO_SCAN=", os.Getenv("REPO_AUTO_SCAN"))
|
|
} else {
|
|
os.Unsetenv("REPO_AUTO_SCAN")
|
|
log.Info("env REPO_AUTO_SCAN=", os.Getenv("REPO_AUTO_SCAN"))
|
|
}
|
|
}
|
|
|
|
hidegrid.NewButton("scan now", func() {
|
|
log.Info("re-scanning repos now")
|
|
i, s := me.repos.View.ScanRepositories()
|
|
log.Info("re-scanning repos done", i, s)
|
|
// me.duration.SetText(s)
|
|
})
|
|
me.duration = me.repos.View.MirrorScanDuration()
|
|
hidegrid.Append(me.duration)
|
|
|
|
hidegrid.NextRow()
|
|
|
|
group1 = vbox.NewGroup("prep for release")
|
|
grid := group1.RawGrid()
|
|
|
|
var longB *gui.Node
|
|
longB = grid.NewButton("generate go.sum files", func() {
|
|
me.Disable()
|
|
var worked bool = true
|
|
for _, repo := range me.repos.View.AllRepos() {
|
|
if whitelist(repo.GoPath()) {
|
|
continue
|
|
}
|
|
ok, err := me.repos.View.CheckValidGoSum(repo)
|
|
if !ok {
|
|
log.Info("redo go.sum failed on", repo.GoPath(), err)
|
|
worked = false
|
|
}
|
|
}
|
|
log.Info("redo go.sum finished with", worked)
|
|
me.Enable()
|
|
longB.SetLabel("go.sum files created")
|
|
if worked {
|
|
longB.Disable()
|
|
}
|
|
})
|
|
|
|
me.setBranchesToMasterB = grid.NewButton("set all branches to master", func() {
|
|
me.Disable()
|
|
defer me.Enable()
|
|
if setAllBranchesToMaster() {
|
|
// if it succeeds, disable this button
|
|
me.setBranchesToMasterB.Disable()
|
|
}
|
|
})
|
|
grid.NextRow()
|
|
|
|
var incrementTags *gui.Node
|
|
incrementTags = grid.NewButton("increment tags", func() {
|
|
me.Disable()
|
|
for _, repo := range me.repos.View.AllRepos() {
|
|
if whitelist(repo.GoPath()) {
|
|
continue
|
|
}
|
|
if repo.ReadOnly() {
|
|
continue
|
|
}
|
|
lasttag := repo.LastTag()
|
|
masterv := repo.Status.GetMasterVersion()
|
|
targetv := repo.Status.GetTargetVersion()
|
|
|
|
if lasttag == masterv {
|
|
// nothing to do if curv == masterv
|
|
// unless go.sum depends on changed repos
|
|
if targetv != lasttag {
|
|
log.Info(repo.GoPath(), "trigger a new release?", targetv, lasttag)
|
|
// repo.Status.SetVersion("0", "21", "0", me.releaseReasonS)
|
|
repo.Status.IncrementMinorVersion(me.releaseReasonS)
|
|
}
|
|
|
|
continue
|
|
}
|
|
|
|
newversion := repo.Status.GetNewVersionTag()
|
|
if newversion == targetv {
|
|
log.Info(repo.GoPath(), "targetv has been increased already to", targetv)
|
|
continue
|
|
}
|
|
|
|
if masterv != targetv {
|
|
log.Info(repo.GoPath(), "master and target differ", masterv, targetv)
|
|
repo.Status.IncrementVersion()
|
|
newversion := repo.Status.GetNewVersionTag()
|
|
repo.Status.SetTargetVersion("v" + newversion)
|
|
// already incremented
|
|
continue
|
|
}
|
|
}
|
|
if findNext() {
|
|
log.Info("findNext() found a repo")
|
|
}
|
|
incrementTags.SetText("maybe ready?")
|
|
me.Enable()
|
|
})
|
|
grid.NewButton("increment minor version", func() {
|
|
// this is messy still. if the release process fails, it needs to continue
|
|
// for now, use the "go.wit.com/log" release minor number as the official
|
|
// release. If it hasn't been updated yet, then start there
|
|
logrepo := me.repos.View.FindRepo("go.wit.com/log")
|
|
if logrepo == nil {
|
|
log.Info("couldn't find go.wit.com/log")
|
|
return
|
|
}
|
|
releasev := logrepo.Status.LastTag()
|
|
for _, repo := range me.repos.View.AllRepos() {
|
|
if whitelist(repo.GoPath()) {
|
|
continue
|
|
}
|
|
if repo.ReadOnly() {
|
|
continue
|
|
}
|
|
if strings.HasPrefix(repo.GoPath(), "go.wit.com/dev") {
|
|
continue
|
|
}
|
|
if strings.HasPrefix(repo.GoPath(), "go.wit.com/widget") {
|
|
// widget I versioned early before I knew what the hell this would mean and can
|
|
// not be down versioned because that's not how GO versioning works. Once you
|
|
// set the version for a path, it's set in stone forever. (smart system!)
|
|
// we could rename go.wit.com/widget to go.wit.com/newwidget and restart the versioning
|
|
// system, but that's rediculous and this servers to always remind me to never make this mistake again
|
|
repo.Status.IncrementRevisionVersion("trying minor")
|
|
continue
|
|
}
|
|
if releasev == repo.Status.LastTag() {
|
|
log.Info("skipping already released repo", repo.Status.GoPath())
|
|
repo.Status.SetTargetVersion(releasev)
|
|
continue
|
|
}
|
|
// repo.Status.SetVersion("0", "22", "0", "trying increment minor")
|
|
repo.Status.IncrementMinorVersion("trying minor")
|
|
}
|
|
})
|
|
grid.NewButton("increment changed repos", func() {
|
|
me.Disable()
|
|
for _, repo := range me.repos.View.AllRepos() {
|
|
if whitelist(repo.GoPath()) {
|
|
continue
|
|
}
|
|
if repo.ReadOnly() {
|
|
continue
|
|
}
|
|
lasttag := repo.Status.LastTag()
|
|
if repo.Status.GetCurrentVersion() == lasttag {
|
|
log.Info("skipping unchanged repo", repo.Status.GoPath())
|
|
repo.Status.SetTargetVersion(lasttag)
|
|
continue
|
|
}
|
|
repo.Status.IncrementRevisionVersion("go-clone")
|
|
}
|
|
me.repos.View.ScanRepositories()
|
|
me.Enable()
|
|
})
|
|
grid.NextRow()
|
|
|
|
group2 := vbox.NewGroup("Debugger")
|
|
dbggrid := group2.NewGrid("gdb", 0, 0)
|
|
dbggrid.NewButton("logging Window", func() {
|
|
logsettings.LogWindow()
|
|
})
|
|
dbggrid.NextRow()
|
|
|
|
dbggrid.NewButton("Debugger Window", func() {
|
|
debugger.DebugWindow()
|
|
})
|
|
}
|
|
|
|
func hidePerfect() {
|
|
for _, repo := range me.repos.View.AllRepos() {
|
|
if repo.State() == "PERFECT" {
|
|
if repo.Hidden() {
|
|
continue
|
|
}
|
|
repo.Hide()
|
|
// return
|
|
}
|
|
}
|
|
}
|