From 68e1f59ccc072c8b39253ff13e794d33f97cfeee Mon Sep 17 00:00:00 2001 From: simon Date: Thu, 4 Jul 2024 16:30:39 +0200 Subject: [PATCH] add wildcard support from commandline --- pom.xml | 5 +++++ src/main/java/de/maishai/Compiler.java | 26 ++++++++++++++++++++++++-- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index b1569e4..f8ad4fb 100644 --- a/pom.xml +++ b/pom.xml @@ -93,6 +93,11 @@ commons-cli 1.8.0 + + commons-io + commons-io + 2.8.0 + diff --git a/src/main/java/de/maishai/Compiler.java b/src/main/java/de/maishai/Compiler.java index b2c318d..1639d60 100644 --- a/src/main/java/de/maishai/Compiler.java +++ b/src/main/java/de/maishai/Compiler.java @@ -10,9 +10,13 @@ import de.maishai.typedast.typedclass.TypedClass; import de.maishai.typedast.typedclass.TypedProgram; import org.antlr.v4.runtime.*; import org.apache.commons.cli.*; +import org.apache.commons.io.FileUtils; +import org.apache.commons.io.filefilter.WildcardFileFilter; +import java.io.File; import java.io.IOException; import java.util.ArrayList; +import java.util.Collection; import java.util.List; import java.util.logging.Formatter; import java.util.logging.Handler; @@ -137,9 +141,27 @@ public class Compiler { List sourcePaths = new ArrayList<>(); for (String arg : cmd.getArgs()) { - String sourcePath = arg.endsWith(JAVA_FILE_EXTENSION) ? arg : arg + JAVA_FILE_EXTENSION; - sourcePaths.add(sourcePath); + if (arg.contains("*")) { + sourcePaths.addAll(expandWildcards(arg)); + } else { + String sourcePath = arg.endsWith(JAVA_FILE_EXTENSION) ? arg : arg + JAVA_FILE_EXTENSION; + sourcePaths.add(sourcePath); + } } generateByteCodeFilesFromFiles(sourcePaths); } + + private static List expandWildcards(String pattern) { + List matchingFiles = new ArrayList<>(); + try { + File dir = new File("."); + Collection files = FileUtils.listFiles(dir, new WildcardFileFilter(pattern), null); + for (File file : files) { + matchingFiles.add(file.getPath()); + } + } catch (Exception e) { + LOGGER.severe("Error expanding wildcards: " + e.getMessage()); + } + return matchingFiles; + } }