You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by vy...@apache.org on 2023/01/09 19:49:37 UTC

[logging-log4j-tools] 02/03: Skip empty directories in exporter

This is an automated email from the ASF dual-hosted git repository.

vy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/logging-log4j-tools.git

commit 42ad72d1335834b1b066ea695ad05c9ab51f30bc
Author: Volkan Yazıcı <vo...@yazi.ci>
AuthorDate: Mon Jan 9 20:31:15 2023 +0100

    Skip empty directories in exporter
---
 .../changelog/exporter/ChangelogExporter.java      | 33 ++++++++++++++--------
 1 file changed, 21 insertions(+), 12 deletions(-)

diff --git a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporter.java b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporter.java
index 1ea18de..236dcea 100644
--- a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporter.java
+++ b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporter.java
@@ -18,6 +18,7 @@ package org.apache.logging.log4j.changelog.exporter;
 
 import java.io.IOException;
 import java.io.UncheckedIOException;
+import java.nio.file.Files;
 import java.nio.file.Path;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -38,18 +39,7 @@ public final class ChangelogExporter {
         final ChangelogExporterArgs args = ChangelogExporterArgs.fromSystemProperties();
 
         // Find release directories
-        final List<Path> releaseDirectories = FileUtils
-                .findAdjacentFiles(
-                        args.changelogDirectory, true,
-                        paths -> paths
-                                .filter(file -> file.toFile().isDirectory())
-                                .sorted(Comparator.comparing(releaseDirectory -> {
-                                    final Path releaseXmlFile = ChangelogFiles.releaseXmlFile(releaseDirectory);
-                                    final ChangelogRelease changelogRelease =
-                                            ChangelogRelease.readFromXmlFile(releaseXmlFile);
-                                    return changelogRelease.date;
-                                }))
-                                .collect(Collectors.toList()));
+        final List<Path> releaseDirectories = findReleaseDirectories(args);
         final int releaseDirectoryCount = releaseDirectories.size();
 
         // Read the release information files
@@ -120,6 +110,25 @@ public final class ChangelogExporter {
 
     }
 
+    private static List<Path> findReleaseDirectories(ChangelogExporterArgs args) {
+        return FileUtils.findAdjacentFiles(
+                args.changelogDirectory, true,
+                paths -> paths
+                        .filter(ChangelogExporter::isNonEmptyDirectory)
+                        .sorted(Comparator.comparing(releaseDirectory -> {
+                            final Path releaseXmlFile = ChangelogFiles.releaseXmlFile(releaseDirectory);
+                            final ChangelogRelease changelogRelease =
+                                    ChangelogRelease.readFromXmlFile(releaseXmlFile);
+                            return changelogRelease.date;
+                        }))
+                        .collect(Collectors.toList()));
+    }
+
+    private static boolean isNonEmptyDirectory(final Path path) {
+        return Files.isDirectory(path) &&
+                FileUtils.findAdjacentFiles(path, false, paths -> paths.findFirst().isPresent());
+    }
+
     private static void exportRelease(
             final Path outputDirectory,
             final Path releaseDirectory,