forgepb/goDebCheck.go

46 lines
1.4 KiB
Go

package forgepb
import (
"go.wit.com/lib/protobuf/gitpb"
"go.wit.com/log"
)
// this is a final check to make sure, before pushing
// a golang repo, that the go.sum file has the correct
// and current version of every package
//
// it re-scans the go.sum file. DOES NOT MODIFY ANYTHING
// this is the last thing to run to double check everything
// before 'git tag' or git push --tags
func (f *Forge) FinalGoDepsCheck(check *gitpb.Repo) bool {
var good bool = true
if check == nil {
log.Info("boo, check == nil")
return false
}
// clear out the protobuf and rescan from the file
check.GoDeps = nil
check.ParseGoSum()
log.Printf("current repo %s go dependancy count: %d", check.GetGoPath(), check.GoDepsLen())
deps := check.GoDeps.SortByGoPath()
for deps.Scan() {
depRepo := deps.Next()
found := f.Repos.FindByGoPath(depRepo.GetGoPath())
if found == nil {
log.Info("not found:", depRepo.GetGoPath())
return false
}
// log.Info("found dep", depRepo.GetGoPath())
if depRepo.GetVersion() != found.GetMasterVersion() {
if f.IsReadOnly(depRepo.GetGoPath()) {
log.Printf("%-48s ok error %10s vs %10s (ignoring read-only repo)", depRepo.GetGoPath(), depRepo.GetVersion(), found.GetMasterVersion())
} else {
log.Printf("%-48s error %10s vs %10s", depRepo.GetGoPath(), depRepo.GetVersion(), found.GetMasterVersion())
good = false
}
}
}
return good
}