public static void performExport()

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