func main()

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)
		}
	}
}