in cmd/updatemodulemeta/main.go [38:109]
func main() {
flag.Parse()
repoRoot, err := repotools.GetRepoRoot()
if err != nil {
log.Fatalf("failed to get repository root: %v", err)
}
config, err := repotools.LoadConfig(repoRoot)
if err != nil {
log.Fatalf("failed to load repository config: %v", err)
}
discoverer := gomod.NewDiscoverer(repoRoot)
if err = discoverer.Discover(); err != nil {
log.Fatalf("failed to discover modules: %v", err)
}
tags, err := git.Tags(repoRoot)
if err != nil {
log.Fatalf("failed to retrieve git tags: %v", err)
}
moduleTags := git.ParseModuleTags(tags)
if len(releaseFileName) > 0 {
manifest, err := loadManifest(releaseFileName)
if err != nil {
log.Fatalf("failed to load release manifest file: %v", err)
}
for _, tag := range manifest.Tags {
moduleTags.Add(tag)
}
}
modules := discoverer.Modules()
for it := modules.Iterator(); ; {
module := it.Next()
if module == nil {
break
}
cfg := config.Modules[module.Path()]
dirPath := module.AbsPath()
if len(cfg.MetadataPackage) > 0 {
pkgRel := filepath.Join(module.Path(), cfg.MetadataPackage)
if m := module.Search(pkgRel); m != nil {
log.Fatalf("%s metadata_package location must not be located in a sub-module",
module.Path())
}
dirPath = filepath.Join(repoRoot, pkgRel)
}
goPackage, err := getModuleGoPackage(dirPath)
if err != nil {
log.Fatalf("failed to determine module go package: %v", err)
}
if len(goPackage) == 0 {
log.Printf("[WARN] unable to determine go package for %v...skipping", module.Path())
continue
}
latest, isTagged := moduleTags.Latest(module.Path())
if cfg, ok := config.Modules[module.Path()]; (ok && cfg.NoTag) || !isTagged {
latest = "tip"
}
if err := writeModuleMetadata(dirPath, goPackage, latest); err != nil {
log.Fatalf("failed to write module metadata: %v", err)
}
}
}