private static void exportIndex()

in log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporter.java [212:248]


    private static void exportIndex(
            final Path outputDirectory,
            final Path changelogDirectory,
            final Set<ChangelogExporterTemplate> indexTemplates,
            final List<ChangelogRelease> changelogReleases,
            final List<Integer> changelogEntryCounts) {
        final Object indexTemplateData = Collections.singletonMap(
                "releases", IntStream
                        .range(0, changelogReleases.size())
                        .boxed()
                        .sorted(Comparator.reverseOrder())
                        .map(releaseIndex -> {
                            final ChangelogRelease changelogRelease = changelogReleases.get(releaseIndex);
                            final int changelogEntryCount = changelogEntryCounts.get(releaseIndex);
                            Map<String, Object> changelogReleaseData = new LinkedHashMap<>();
                            changelogReleaseData.put("version", changelogRelease.version);
                            changelogReleaseData.put("date", changelogRelease.date);
                            changelogReleaseData.put("changelogEntryCount", changelogEntryCount);
                            return (Object) changelogReleaseData;
                        })
                        .collect(Collectors.toList()));
        indexTemplates.forEach(indexTemplate -> {
            final Path indexTemplateSourceFile = changelogDirectory.resolve(indexTemplate.sourceFileName);
            if (Files.exists(indexTemplateSourceFile)) {
                final String indexTemplateSourceName = templateName(changelogDirectory, indexTemplateSourceFile);
                final Path indexTemplateTargetFile = outputDirectory.resolve(indexTemplate.targetFileName);
                FreeMarkerUtils.render(
                        changelogDirectory,
                        indexTemplateSourceName,
                        indexTemplateData,
                        indexTemplateTargetFile);
            } else if (indexTemplate.failIfNotFound) {
                final String message = String.format("could not find template file: `%s`", indexTemplateSourceFile);
                throw new IllegalStateException(message);
            }
        });
    }