Index: third_party/robolectric/template_processor/src/org/chromium/testing/robolectric/template/ProcessTemplateArgParser.java |
diff --git a/third_party/robolectric/template_processor/src/org/chromium/testing/robolectric/template/ProcessTemplateArgParser.java b/third_party/robolectric/template_processor/src/org/chromium/testing/robolectric/template/ProcessTemplateArgParser.java |
new file mode 100644 |
index 0000000000000000000000000000000000000000..1df401a7b7120470fbd68fcd845f416e1aa4a394 |
--- /dev/null |
+++ b/third_party/robolectric/template_processor/src/org/chromium/testing/robolectric/template/ProcessTemplateArgParser.java |
@@ -0,0 +1,99 @@ |
+// Copyright 2016 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+package org.chromium.testing.robolectric.template; |
+ |
+import java.nio.file.Path; |
+import java.nio.file.Paths; |
+ |
+/** |
+ * Parses command line arguments for ProcessRobolectricTemplate. |
+ */ |
+public class ProcessTemplateArgParser { |
+ |
+ private Path mBaseTemplateDir; |
+ private Path mOutputDir; |
+ private Integer mApiLevel; |
+ |
+ public static ProcessTemplateArgParser parse(String[] args) { |
+ |
+ ProcessTemplateArgParser parsed = new ProcessTemplateArgParser(); |
+ |
+ for (int i = 0; i < args.length; ++i) { |
+ if (args[i].startsWith("-")) { |
+ String argName; |
+ if (args[i].startsWith("-", 1)) { |
+ argName = args[i].substring(2, args[i].length()); |
+ } else { |
+ argName = args[i].substring(1, args[i].length()); |
+ } |
+ try { |
+ if ("output-dir".equals(argName)) { |
+ // Read the command line argument after the flag. |
+ parsed.setOutputDir(args[++i]); |
+ } else if ("base-template-dir".equals(argName)) { |
+ // Read the command line argument after the flag. |
+ parsed.setBaseTemplateDir(args[++i]); |
+ } else if ("api-level".equals(argName)) { |
+ // Read the command line argument after the flag. |
+ parsed.setApiLevel(args[++i]); |
+ } else { |
+ System.out.println("Ignoring flag: \"" + argName + "\""); |
+ } |
+ } catch (ArrayIndexOutOfBoundsException e) { |
+ System.err.println("No value specified for argument \"" + argName + "\""); |
+ System.exit(1); |
+ } |
+ } else { |
+ System.out.println("Ignoring argument: \"" + args[i] + "\""); |
+ } |
+ } |
+ |
+ if (parsed.getOutputDir() == null) { |
+ System.err.println("--output-dir argument required."); |
+ System.exit(1); |
+ } |
+ |
+ if (parsed.getBaseTemplateDir() == null) { |
+ System.err.println("--base-template-dir argument required."); |
+ System.exit(1); |
+ } |
+ |
+ if (parsed.getApiLevel() == null) { |
+ System.err.println("--api-level argument required."); |
+ System.exit(1); |
+ } |
+ return parsed; |
+ } |
+ |
+ private ProcessTemplateArgParser() { |
+ mBaseTemplateDir = null; |
+ mOutputDir = null; |
+ mApiLevel = null; |
+ } |
+ |
+ public Path getBaseTemplateDir() { |
+ return mBaseTemplateDir; |
+ } |
+ |
+ public Path getOutputDir() { |
+ return mOutputDir; |
+ } |
+ |
+ public Integer getApiLevel() { |
+ return mApiLevel; |
+ } |
+ |
+ private void setBaseTemplateDir(String path) { |
+ mBaseTemplateDir = Paths.get(path); |
+ } |
+ |
+ private void setOutputDir(String path) { |
+ mOutputDir = Paths.get(path); |
+ } |
+ |
+ private void setApiLevel(String integer) { |
+ mApiLevel = Integer.parseInt(integer); |
+ } |
+} |