guireleaser/globalDisplayOptions.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
}
}
}