Adding support for parameter files.
diff --git a/cmdline/tool/src/org/netbeans/modules/jackpot30/cmdline/Main.java b/cmdline/tool/src/org/netbeans/modules/jackpot30/cmdline/Main.java
index bf64fd6..e97cc9f 100644
--- a/cmdline/tool/src/org/netbeans/modules/jackpot30/cmdline/Main.java
+++ b/cmdline/tool/src/org/netbeans/modules/jackpot30/cmdline/Main.java
@@ -19,9 +19,11 @@
package org.netbeans.modules.jackpot30.cmdline;
+import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
+import java.io.FileReader;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintStream;
@@ -155,7 +157,7 @@
OptionSet parsed;
try {
- parsed = parser.parse(args);
+ parsed = parser.parse(inlineParameterFiles(args));
} catch (OptionException ex) {
System.err.println(ex.getLocalizedMessage());
parser.printHelpOn(System.out);
@@ -350,6 +352,28 @@
}
}
+ private static String[] inlineParameterFiles(String... args) {
+ List<String> inlinedArgs = new ArrayList<>();
+
+ for (String arg : args) {
+ if (arg.startsWith("@")) {
+ try (BufferedReader r = new BufferedReader(new FileReader(arg.substring(1)))) {
+ String line;
+
+ while ((line = r.readLine()) != null) {
+ inlinedArgs.add(line);
+ }
+ } catch (IOException ex) {
+ throw new OptionException(Collections.emptySet(), ex) {};
+ }
+ } else {
+ inlinedArgs.add(arg);
+ }
+ }
+
+ return inlinedArgs.toArray(new String[0]);
+ }
+
private static Pair<ClassPath, ClassPath> jointSourceAndBinaryCP(List<RootConfiguration> groups) {
Set<FileObject> sourceRoots = new HashSet<>();
Set<FileObject> binaryRoots = new HashSet<>();
diff --git a/cmdline/tool/test/unit/src/org/netbeans/modules/jackpot30/cmdline/MainTest.java b/cmdline/tool/test/unit/src/org/netbeans/modules/jackpot30/cmdline/MainTest.java
index 5310b20..f5b7056 100644
--- a/cmdline/tool/test/unit/src/org/netbeans/modules/jackpot30/cmdline/MainTest.java
+++ b/cmdline/tool/test/unit/src/org/netbeans/modules/jackpot30/cmdline/MainTest.java
@@ -861,6 +861,33 @@
sourceLevel);
}
+ public void testParameterFile() throws Exception {
+ String golden =
+ "package test;\n" +
+ "public class Test {\n" +
+ " private void test(java.util.Collection c) {\n" +
+ " boolean b = c.isEmpty();\n" +
+ " }\n" +
+ "}\n";
+
+ doRunCompiler(golden,
+ null,
+ null,
+ "src/test/Test.java",
+ "package test;\n" +
+ "public class Test {\n" +
+ " private void test(java.util.Collection c) {\n" +
+ " boolean b = c.size() == 0;\n" +
+ " }\n" +
+ "}\n",
+ "parameters.txt",
+ "--apply\n" +
+ "--hint\n" +
+ "Usage of .size() == 0\n",
+ null,
+ "@" + getWorkDirPath() + "/parameters.txt");
+ }
+
private static final String DONT_APPEND_PATH = new String("DONT_APPEND_PATH");
private static final String IGNORE = new String("IGNORE");