diff options
Diffstat (limited to 'main.go')
| -rw-r--r-- | main.go | 84 |
1 files changed, 84 insertions, 0 deletions
@@ -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() { |
