in cmd/calculaterelease/main.go [40:106]
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 repotools config: %v", err)
}
discoverer := gomod.NewDiscoverer(repoRoot)
if err := discoverer.Discover(); err != nil {
log.Fatalf("failed to discover repository modules: %v", err)
}
tags, err := git.Tags(repoRoot)
if err != nil {
log.Fatalf("failed to get git tags: %v", err)
}
taggedModules := git.ParseModuleTags(tags)
annotations, err := changelog.GetAnnotations(repoRoot)
if err != nil {
log.Fatal(err)
}
log.Println("Calculating module changes")
modulesForRelease, err := release.Calculate(discoverer, taggedModules, config, annotations)
if err != nil {
log.Fatal(err)
}
id := release.NextReleaseID(tags)
manifest, err := release.BuildReleaseManifest(discoverer.Modules(), id, modulesForRelease, verbose, preview.String())
if err != nil {
log.Fatal(err)
}
marshal, err := json.MarshalIndent(manifest, "", " ")
if err != nil {
log.Fatal(err)
}
if len(outputFile) == 0 {
fmt.Printf("%v\n", string(marshal))
return
}
file, err := os.OpenFile(outputFile, os.O_CREATE|os.O_EXCL|os.O_WRONLY, 0644)
if err != nil {
log.Fatal(err)
}
defer func() {
if err := file.Close(); err != nil {
log.Fatal(err)
}
}()
if _, err = io.Copy(file, bytes.NewReader(marshal)); err != nil {
log.Fatal(err)
}
}