package forgepb import ( "strings" "go.wit.com/lib/protobuf/gitpb" "go.wit.com/log" ) // DOES NOT MODIFY ANYTHING // // 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) FinalGoDepsCheckOk(check *gitpb.Repo) bool { var good bool = true if check == nil { log.Info("boo, check == nil") return false } // parse the go.mod and go.sum files if !check.ParseGoSum() { log.Info("forge.FinalGoDepsCheckOk() failed") return false } if check.GetGoPrimitive() { return true } 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.FindByGoPath(depRepo.GetGoPath()) if found == nil { if f.CheckOverride(depRepo.GetGoPath()) { // skip this gopath because it's probably broken forever continue } log.Info("not found:", depRepo.GetGoPath()) good = false continue } // log.Info("found dep", depRepo.GetGoPath()) if depRepo.GetVersion() != found.GetTargetVersion() { check := f.FindByGoPath(depRepo.GetGoPath()) if f.Config.IsReadOnly(check.GetGoPath()) { log.Printf("%-48s ok error .%s. vs .%s. (ignoring read-only repo)", depRepo.GetGoPath(), depRepo.GetVersion(), found.GetTargetVersion()) } else { if f.CheckOverride(depRepo.GetGoPath()) { log.Printf("%-48s ok error .%s. vs .%s. (forge.CheckOverride())", depRepo.GetGoPath(), depRepo.GetVersion(), found.GetTargetVersion()) // skip this gopath because it's probably broken forever continue } else { log.Printf("%-48s error %10s vs %10s", depRepo.GetGoPath(), depRepo.GetVersion(), found.GetTargetVersion()) good = false } } } } return good } func (f *Forge) CheckOverride(gopath string) bool { if gopath == "cloud.google.com/go" { log.Info("CheckOverride() is ignoring", gopath) return true } if gopath == "bou.ke/monkey" { log.Info("CheckOverride() is ignoring", gopath) return true } if gopath == "github.com/posener/complete/v2" { log.Info("CheckOverride() is ignoring", gopath) return true } if strings.HasPrefix(gopath, "github.com/go-gl") { log.Info("CheckOverride() is ignoring", gopath) return true } if strings.HasPrefix(gopath, "google.golang.org") { log.Info("CheckOverride() is ignoring", gopath) return true } if strings.HasPrefix(gopath, "go.opencensus.io") { log.Info("CheckOverride() is ignoring", gopath) return true } if strings.HasPrefix(gopath, "github.com/nicksnyder/go-i18n") { log.Info("CheckOverride() is ignoring", gopath) return true } // fuckit for now. just blacklist github.com if strings.HasPrefix(gopath, "github.com/") { log.Info("CheckOverride() is ignoring", gopath) return true } return false }