diff options
Diffstat (limited to 'java/com/google/turbine/options/TurbineOptionsParser.java')
-rw-r--r-- | java/com/google/turbine/options/TurbineOptionsParser.java | 67 |
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() {} } |