checks for more things

This commit is contained in:
Jeff Carr 2025-02-08 06:32:37 -06:00
parent 021c7774b2
commit 8cc487393f
2 changed files with 102 additions and 0 deletions

View File

@ -113,6 +113,8 @@ func main() {
badExit(errors.New(msg))
}
me.forge.RillFuncError(rillPurge)
// run this each time something gets published successfully
rePrepareRelease()

View File

@ -2,6 +2,7 @@ package main
import (
"errors"
"fmt"
"os"
"path/filepath"
"time"
@ -43,6 +44,23 @@ func checkpkgcache(repo *gitpb.Repo) error {
var rillcount int
func rillPurge(repo *gitpb.Repo) error {
if me.forge.Config.IsReadOnly(repo.GetGoPath()) {
return nil
}
if me.forge.Config.IsPrivate(repo.GetGoPath()) {
return nil
}
_, err := repo.RunQuiet([]string{"go-mod-clean", "--purge"})
rillcount += 1
if err != nil {
log.Info("go-mod-clean --smart failed", repo.GetGoPath(), err)
return err
}
return nil
}
func rillRestore(repo *gitpb.Repo) error {
if me.forge.Config.IsReadOnly(repo.GetGoPath()) {
return nil
@ -102,6 +120,20 @@ func rePrepareRelease() {
// can't release readonly repos
continue
}
if !me.forge.Config.IsPrivate(check.GetGoPath()) {
if err := checkPublishedGodeps(check); err != nil {
// this means the published godeps are no longer up to date
forceReleaseVersion(check)
me.found.AppendByGoPath(check)
log.Info("checkPublishedGodeps failed with err", check.GetGoPath(), err)
okExit("")
continue
} else {
// log.Info("checkPublishedGodeps is ok", check.GetGoPath())
}
}
// if master != lastTag, always increment
master := check.GetMasterVersion()
lastTag := check.GetLastTag()
@ -187,3 +219,71 @@ func alreadyDone(repo *gitpb.Repo) bool {
}
return false
}
func checkPublishedGodeps(repo *gitpb.Repo) error {
godepsOld, err := repo.GoSumFromPkgDir()
if err != nil {
return err
}
if godepsOld != nil {
if err := me.forge.TestGoDepsCheckOk(godepsOld, argv.Verbose); err != nil {
return err
}
/*
all := godepsOld.All()
for all.Scan() {
dep := all.Next()
// log.Info(repo.GetGoPath(), dep.GoPath, dep.Version)
// check if the package in question is waiting for another package to publish
found := me.forge.FindByGoPath(dep.GoPath)
if found == nil {
return fmt.Errorf("%s has godep %s which can not be found", repo.GetGoPath(), dep.GoPath)
}
if found.GetLastTag() != dep.Version {
return fmt.Errorf("%s with godep %s version mismatch %s vs %s", repo.GetGoPath(), dep.GoPath, found.GetLastTag(), dep.Version)
}
}
*/
}
godepsNew, err := repo.GoSumFromRepo()
if err != nil {
return err
}
if godepsOld == nil {
if godepsNew == nil {
log.Printf("%s published godeps == nil && real == nil\n", repo.GetGoPath())
return nil
} else {
return fmt.Errorf("published godeps == nil vs real != nil")
}
}
if err := me.forge.TestGoDepsCheckOk(godepsNew, argv.Verbose); err != nil {
return err
}
return nil
}
/*
func checkGodeps(repo *gitpb.Repo, godeps *gitpb.GoDeps) error {
if godeps == nil {
}
return nil
all := godeps.All()
for all.Scan() {
dep := all.Next()
// log.Info(repo.GetGoPath(), dep.GoPath, dep.Version)
// check if the package in question is waiting for another package to publish
found := me.forge.FindByGoPath(dep.GoPath)
if found == nil {
return fmt.Errorf("%s has godep %s which can not be found", repo.GetGoPath(), dep.GoPath)
}
if found.GetLastTag() != dep.Version {
return fmt.Errorf("%s with godep %s version mismatch %s vs %s", repo.GetGoPath(), dep.GoPath, found.GetLastTag(), dep.Version)
}
log.Printf("%s with godep %s version match %s vs %s\n", repo.GetGoPath(), dep.GoPath, found.GetLastTag(), dep.Version)
}
return nil
}
*/