in cmd/generatechangelog/main.go [28:86]
func main() {
flag.Parse()
if len(releaseManifestFile) == 0 {
log.Fatalln("first argument should be a release manifest file")
}
manifest, err := loadManifest(releaseManifestFile)
if err != nil {
log.Fatalf("failed to load release manifest file: %v", err)
}
if len(manifest.Tags) == 0 {
log.Println("manifest contains no tags for release...skipping changelog generation")
os.Exit(0)
}
cwd, err := os.Getwd()
if err != nil {
log.Fatalf("failed to get current working directory: %v", err)
}
repoRoot, err := repotools.FindRepoRoot(cwd)
if err != nil {
log.Fatalf("failed to get git repository root: %v", err)
}
annotations, err := changelog.GetAnnotations(repoRoot)
if err != nil {
log.Fatalf("failed to get change annotations: %v", err)
}
annotations = filterUnreferencedAnnotations(manifest, annotations)
summary, err := generateSummary(manifest, annotations)
if err != nil {
log.Fatalf("failed to generate summary: %v", err)
}
if err := writeRepoChangeLogEntry(repoRoot, summary); err != nil {
log.Fatalf("failed to write summary CHANGELOG.md")
}
for moduleDir, ms := range summary.Modules {
if moduleDir == "." {
// The root module contains the repository changelog
continue
}
if err = writeModuleChangeLog(filepath.Join(repoRoot, moduleDir), ms); err != nil {
log.Fatalf("failed to write module CHANGELOG.md: %v", err)
}
}
if len(summaryNotesFile) > 0 {
if err := writeSummaryNotes(summaryNotesFile, summary); err != nil {
log.Fatalf("failed to write summary notes: %v", err)
}
}
}