aboutsummaryrefslogtreecommitdiff
path: root/java/com/google/turbine/options/TurbineOptionsParser.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/com/google/turbine/options/TurbineOptionsParser.java')
-rw-r--r--java/com/google/turbine/options/TurbineOptionsParser.java67
1 files changed, 41 insertions, 26 deletions
diff --git a/java/com/google/turbine/options/TurbineOptionsParser.java b/java/com/google/turbine/options/TurbineOptionsParser.java
index 17d4bf6..4a8ff16 100644
--- a/java/com/google/turbine/options/TurbineOptionsParser.java
+++ b/java/com/google/turbine/options/TurbineOptionsParser.java
@@ -30,10 +30,9 @@ import java.nio.file.Paths;
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.Iterator;
-import org.checkerframework.checker.nullness.qual.Nullable;
/** A command line options parser for {@link TurbineOptions}. */
-public class TurbineOptionsParser {
+public final class TurbineOptionsParser {
/**
* Parses command line options into {@link TurbineOptions}, expanding any {@code @params} files.
@@ -57,17 +56,17 @@ public class TurbineOptionsParser {
private static void parse(TurbineOptions.Builder builder, Deque<String> argumentDeque) {
while (!argumentDeque.isEmpty()) {
- String next = argumentDeque.pollFirst();
+ String next = argumentDeque.removeFirst();
switch (next) {
case "--output":
- builder.setOutput(readOne(argumentDeque));
+ builder.setOutput(readOne(next, argumentDeque));
break;
case "--source_jars":
builder.setSourceJars(readList(argumentDeque));
break;
case "--temp_dir":
// TODO(cushon): remove this when Bazel no longer passes the flag
- readOne(argumentDeque);
+ readOne(next, argumentDeque);
break;
case "--processors":
builder.setProcessors(readList(argumentDeque));
@@ -85,10 +84,10 @@ public class TurbineOptionsParser {
builder.setBootClassPath(readList(argumentDeque));
break;
case "--release":
- builder.setRelease(readOne(argumentDeque));
+ builder.setRelease(readOne(next, argumentDeque));
break;
case "--system":
- builder.setSystem(readOne(argumentDeque));
+ builder.setSystem(readOne(next, argumentDeque));
break;
case "--javacopts":
{
@@ -100,11 +99,12 @@ public class TurbineOptionsParser {
case "--sources":
builder.setSources(readList(argumentDeque));
break;
+ case "--output_deps_proto":
case "--output_deps":
- builder.setOutputDeps(readOne(argumentDeque));
+ builder.setOutputDeps(readOne(next, argumentDeque));
break;
case "--output_manifest_proto":
- builder.setOutputManifest(readOne(argumentDeque));
+ builder.setOutputManifest(readOne(next, argumentDeque));
break;
case "--direct_dependencies":
builder.setDirectJars(readList(argumentDeque));
@@ -113,10 +113,10 @@ public class TurbineOptionsParser {
builder.setDepsArtifacts(readList(argumentDeque));
break;
case "--target_label":
- builder.setTargetLabel(readOne(argumentDeque));
+ builder.setTargetLabel(readOne(next, argumentDeque));
break;
case "--injecting_rule_kind":
- builder.setInjectingRuleKind(readOne(argumentDeque));
+ builder.setInjectingRuleKind(readOne(next, argumentDeque));
break;
case "--javac_fallback":
case "--nojavac_fallback":
@@ -129,26 +129,37 @@ public class TurbineOptionsParser {
builder.setReducedClasspathMode(ReducedClasspathMode.NONE);
break;
case "--reduce_classpath_mode":
- builder.setReducedClasspathMode(ReducedClasspathMode.valueOf(readOne(argumentDeque)));
+ builder.setReducedClasspathMode(
+ ReducedClasspathMode.valueOf(readOne(next, argumentDeque)));
break;
case "--full_classpath_length":
- builder.setFullClasspathLength(Integer.parseInt(readOne(argumentDeque)));
+ builder.setFullClasspathLength(Integer.parseInt(readOne(next, argumentDeque)));
break;
case "--reduced_classpath_length":
- builder.setReducedClasspathLength(Integer.parseInt(readOne(argumentDeque)));
+ builder.setReducedClasspathLength(Integer.parseInt(readOne(next, argumentDeque)));
break;
case "--profile":
- builder.setProfile(readOne(argumentDeque));
+ builder.setProfile(readOne(next, argumentDeque));
break;
+ case "--generated_sources_output":
case "--gensrc_output":
- builder.setGensrcOutput(readOne(argumentDeque));
+ builder.setGensrcOutput(readOne(next, argumentDeque));
break;
case "--resource_output":
- builder.setResourceOutput(readOne(argumentDeque));
+ builder.setResourceOutput(readOne(next, argumentDeque));
break;
case "--help":
builder.setHelp(true);
break;
+ case "--experimental_fix_deps_tool":
+ case "--strict_java_deps":
+ case "--native_header_output":
+ // accepted (and ignored) for compatibility with JavaBuilder command lines
+ readOne(next, argumentDeque);
+ break;
+ case "--compress_jar":
+ // accepted (and ignored) for compatibility with JavaBuilder command lines
+ break;
default:
throw new IllegalArgumentException("unknown option: " + next);
}
@@ -190,20 +201,22 @@ public class TurbineOptionsParser {
}
}
- /** Returns the value of an option, or {@code null}. */
- @Nullable
- private static String readOne(Deque<String> argumentDeque) {
- if (argumentDeque.isEmpty() || argumentDeque.peekFirst().startsWith("-")) {
- return null;
+ /**
+ * Returns the value of an option, or throws {@link IllegalArgumentException} if the value is not
+ * present.
+ */
+ private static String readOne(String flag, Deque<String> argumentDeque) {
+ if (argumentDeque.isEmpty() || argumentDeque.getFirst().startsWith("-")) {
+ throw new IllegalArgumentException("missing required argument for: " + flag);
}
- return argumentDeque.pollFirst();
+ return argumentDeque.removeFirst();
}
/** Returns a list of option values. */
private static ImmutableList<String> readList(Deque<String> argumentDeque) {
ImmutableList.Builder<String> result = ImmutableList.builder();
- while (!argumentDeque.isEmpty() && !argumentDeque.peekFirst().startsWith("--")) {
- result.add(argumentDeque.pollFirst());
+ while (!argumentDeque.isEmpty() && !argumentDeque.getFirst().startsWith("--")) {
+ result.add(argumentDeque.removeFirst());
}
return result.build();
}
@@ -215,7 +228,7 @@ public class TurbineOptionsParser {
private static ImmutableList<String> readJavacopts(Deque<String> argumentDeque) {
ImmutableList.Builder<String> result = ImmutableList.builder();
while (!argumentDeque.isEmpty()) {
- String arg = argumentDeque.pollFirst();
+ String arg = argumentDeque.removeFirst();
if (arg.equals("--")) {
return result.build();
}
@@ -237,4 +250,6 @@ public class TurbineOptionsParser {
}
}
}
+
+ private TurbineOptionsParser() {}
}