in log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporter.java [42:116]
public static void performExport(final ChangelogExporterArgs args) {
// Find release directories
final List<Path> releaseDirectories = findReleaseDirectories(args);
final int releaseDirectoryCount = releaseDirectories.size();
// Read the release information files
final List<ChangelogRelease> changelogReleases = releaseDirectories.stream()
.map(releaseDirectory -> {
final Path releaseXmlFile = ChangelogFiles.releaseXmlFile(releaseDirectory);
return ChangelogRelease.readFromXmlFile(releaseXmlFile);
})
.collect(Collectors.toList());
final List<Integer> changelogEntryCounts =
releaseDirectories.stream().map(ignored -> 0).collect(Collectors.toList());
// Export releases
if (releaseDirectoryCount > 0) {
// Export each release directory
for (int releaseIndex = 0; releaseIndex < releaseDirectories.size(); releaseIndex++) {
final Path releaseDirectory = releaseDirectories.get(releaseIndex);
final ChangelogRelease changelogRelease = changelogReleases.get(releaseIndex);
final int changelogEntryCount;
try {
changelogEntryCount = exportRelease(
args.outputDirectory,
args.changelogDirectory,
releaseDirectory,
changelogRelease,
args.changelogTemplates);
} catch (final Exception error) {
final String message =
String.format("failed exporting release from directory `%s`", releaseDirectory);
throw new RuntimeException(message, error);
}
changelogEntryCounts.set(releaseIndex, changelogEntryCount);
}
// Report the operation
if (releaseDirectoryCount == 1) {
System.out.format("exported a single release directory: `%s`%n", releaseDirectories.get(0));
} else {
System.out.format(
"exported %d release directories: ..., `%s`%n",
releaseDirectories.size(), releaseDirectories.get(releaseDirectoryCount - 1));
}
}
// Export unreleased
ChangelogFiles.unreleasedDirectoryVersionMajors(args.changelogDirectory).stream()
.sorted()
.forEach(upcomingReleaseVersionMajor -> {
final Path upcomingReleaseDirectory =
ChangelogFiles.unreleasedDirectory(args.changelogDirectory, upcomingReleaseVersionMajor);
final ChangelogRelease upcomingRelease = upcomingRelease(upcomingReleaseVersionMajor);
System.out.format("exporting upcoming release directory: `%s`%n", upcomingReleaseDirectory);
final int changelogEntryCount = exportRelease(
args.outputDirectory,
args.changelogDirectory,
upcomingReleaseDirectory,
upcomingRelease,
args.changelogTemplates);
changelogReleases.add(upcomingRelease);
changelogEntryCounts.add(changelogEntryCount);
});
// Export the release index
exportIndex(
args.outputDirectory,
args.changelogDirectory,
args.indexTemplates,
changelogReleases,
changelogEntryCounts);
}