summaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'main.go')
-rw-r--r--main.go84
1 files changed, 84 insertions, 0 deletions
diff --git a/main.go b/main.go
index 49eefc9..cc3d81b 100644
--- a/main.go
+++ b/main.go
@@ -7,9 +7,12 @@ package main
import (
"embed"
+ "errors"
+ "path/filepath"
"go.wit.com/lib/protobuf/argvpb"
"go.wit.com/lib/protobuf/forgepb"
+ "go.wit.com/lib/protobuf/gitpb"
"go.wit.com/log"
)
@@ -18,6 +21,76 @@ import (
//go:embed resources/*
var resources embed.FS
+func findTagname(stats *gitpb.Stats, brname string) *gitpb.Stat {
+ ref := stats.FindByName(brname)
+ if ref != nil {
+ return ref
+ }
+ ref = stats.FindByName(filepath.Join("refs/heads", brname))
+ if ref != nil {
+ return ref
+ }
+ // for r := range stats.IterAll() {
+ // if strings.HasPrefix(r.Name, "refs/tags/") {
+ // continue
+ // }
+ // log.Printf("brname(%s) ref(%s)\n", brname, r.Name)
+ // }
+ return nil
+}
+
+// true if something changed
+func setStats(repo *gitpb.Repo) error {
+ var err error
+ stats, err := repo.LoadRefs()
+ if err != nil {
+ log.Printf("%s LoadRefs() err(%v)\n", stats.Filename, err)
+ return err
+ }
+ // log.Printf("%s LoadRefs() len(%d)\n", stats.Filename, stats.Len())
+
+ var brname string
+ var ref *gitpb.Stat
+ // brname = me.forge.Config.FindMasterBranch(repo.Namespace)
+ brname = repo.GetMasterBranchName()
+ ref = findTagname(stats, brname)
+ if repo.MasterStat == nil {
+ if ref != nil {
+ err = errors.New("master stat was nil")
+ }
+ }
+ repo.MasterStat = ref
+
+ // brname = me.forge.Config.FindDevelBranch(repo.Namespace)
+ brname = repo.GetDevelBranchName()
+ ref = findTagname(stats, brname)
+ if repo.DevelStat == nil {
+ if ref != nil {
+ err = errors.New("devel stat was nil")
+ }
+ }
+ repo.DevelStat = ref
+
+ // brname = me.forge.Config.FindUserBranch(repo.Namespace)
+ brname = repo.GetUserBranchName()
+ ref = findTagname(stats, brname)
+ if repo.UserStat == nil {
+ if ref != nil {
+ err = errors.New("user stat was nil")
+ }
+ }
+ repo.UserStat = ref
+ if repo.Tags.Len() != stats.Len() {
+ log.Printf("tags Tags.len(%d) vs stats.Len(%d)\n", repo.Tags.Len(), stats.Len())
+ repo.Tags = stats
+ err = errors.New("adding stats to repo.Tags")
+ } else {
+ // log.Printf("tags already here with len(%d)\n", repo.Tags.Len())
+ }
+
+ return err
+}
+
func doCoreChecks() {
me.forge.RescanRepos() // looks for new dirs, checks existing repos for changes
@@ -38,6 +111,17 @@ func doCoreChecks() {
dumpDebug()
}
}
+
+ var trip bool
+ for repo := range me.forge.Repos.IterAll() {
+ if err := setStats(repo); err != nil {
+ log.Printf("%s err(%v)\n", repo.Namespace, err)
+ trip = true
+ }
+ }
+ if trip {
+ me.forge.Repos.SaveVerbose()
+ }
}
func main() {