auto-version and release only changed repos

This commit is contained in:
Jeff Carr 2024-02-22 11:35:23 -06:00
parent 0a593ba643
commit b805fe15c9
4 changed files with 76 additions and 38 deletions

View File

@ -119,7 +119,15 @@ func globalDisplayOptions(box *gui.Node) {
me.setBranchesToMasterB.Disable()
}
})
grid.NextRow()
var setTarget *gui.Node
// check to see if target versions need to be changed
setTarget = grid.NewButton("increment target versions", func() {
if incrementTargetVersion() {
setTarget.SetText("DONE")
}
})
grid.NextRow()
group2 := vbox.NewGroup("Debugger")

37
main.go
View File

@ -4,7 +4,6 @@ import (
"embed"
"os"
"path/filepath"
"strings"
"go.wit.com/gui"
"go.wit.com/lib/gui/shell"
@ -149,39 +148,3 @@ func setAllBranchesToMaster() bool {
}
return worked
}
func setTargetVersion() {
// go through and set the target versions for each repo
// todo: add sanity checking in repolist to verify these and/or autocompute them
// for now, just don't be stupid when you set your ENV vars
// 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
var count int
for i, repo := range me.repos.View.AllRepos() {
if repo == nil {
log.Info("initial scan repo = nil", i)
continue
}
if repo.Status == nil {
log.Info("repo.status == nil", repo.Name())
continue
}
if repo.GoPath() == "go.wit.com/widget" {
repo.Status.SetTargetVersion("v" + widgetVersion)
} else {
repo.Status.SetTargetVersion("v" + releaseVersion)
}
if strings.HasPrefix(repo.GoPath(), "go.wit.com/dev/") {
lasttag := repo.Status.GetLastTagVersion()
repo.Status.SetTargetVersion(lasttag)
}
// repo.NewScan()
count += 1
}
log.Info("target versions set for", count, "repos")
}

View File

@ -2,8 +2,8 @@ package main
import (
"go.wit.com/lib/gadgets"
"go.wit.com/lib/gui/repolist"
"go.wit.com/lib/gui/gowit"
"go.wit.com/lib/gui/repolist"
"go.wit.com/log"
"go.wit.com/gui"

67
setTargetVersion.go Normal file
View File

@ -0,0 +1,67 @@
package main
import (
"strings"
"go.wit.com/log"
)
func setTargetVersion() {
// go through and set the target versions for each repo
// todo: add sanity checking in repolist to verify these and/or autocompute them
// for now, just don't be stupid when you set your ENV vars
// 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
var count int
for i, repo := range me.repos.View.AllRepos() {
if repo == nil {
log.Info("initial scan repo = nil", i)
continue
}
if repo.Status == nil {
log.Info("repo.status == nil", repo.Name())
continue
}
if repo.GoPath() == "go.wit.com/widget" {
repo.Status.SetTargetVersion("v" + widgetVersion)
} else {
repo.Status.SetTargetVersion("v" + releaseVersion)
}
if strings.HasPrefix(repo.GoPath(), "go.wit.com/dev/") {
lasttag := repo.Status.GetLastTagVersion()
repo.Status.SetTargetVersion(lasttag)
}
// repo.NewScan()
count += 1
}
log.Info("target versions set for", count, "repos")
}
// trys to figure out if the version needs to be incremented
func incrementTargetVersion() bool {
var count int
for _, repo := range me.repos.View.AllRepos() {
if repo.ReadOnly() {
continue
}
lasttag := repo.Status.GetLastTagVersion()
master := repo.Status.GetMasterVersion()
if lasttag != master {
log.Info("increment target version", repo.GoPath(), lasttag, master)
count += 1
} else {
// check go dependancies for target version changes
}
}
log.Info("need to update target versions for", count, "repos")
if count == 0 {
return true
}
return false
}