Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(587)

Side by Side Diff: third_party/robolectric/template_processor/src/org/chromium/testing/robolectric/template/ProcessTemplateArgParser.java

Issue 2200413004: Pass template files explicitly to Robolectric template processor. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Pass template files explicitly to Robolectric template processor. Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.testing.robolectric.template; 5 package org.chromium.testing.robolectric.template;
6 6
7 import java.nio.file.Path; 7 import java.nio.file.Path;
8 import java.nio.file.Paths; 8 import java.nio.file.Paths;
9 9 import java.util.LinkedList;
10 import java.util.List;
10 /** 11 /**
11 * Parses command line arguments for ProcessRobolectricTemplate. 12 * Parses command line arguments for ProcessRobolectricTemplate.
12 */ 13 */
13 public class ProcessTemplateArgParser { 14 public class ProcessTemplateArgParser {
14 15
16 private List<TemplateFileInfo> mTemplateFileInfoList;
15 private Path mBaseTemplateDir; 17 private Path mBaseTemplateDir;
16 private Path mOutputDir; 18 private Path mOutputDir;
17 private Integer mApiLevel; 19 private Integer mApiLevel;
18 20
19 public static ProcessTemplateArgParser parse(String[] args) { 21 public static ProcessTemplateArgParser parse(String[] args) {
20 22
21 ProcessTemplateArgParser parsed = new ProcessTemplateArgParser(); 23 ProcessTemplateArgParser parsed = new ProcessTemplateArgParser();
22 24
23 for (int i = 0; i < args.length; ++i) { 25 for (int i = 0; i < args.length; ++i) {
24 if (args[i].startsWith("-")) { 26 if (args[i].startsWith("-")) {
25 String argName; 27 String argName;
26 if (args[i].startsWith("-", 1)) { 28 if (args[i].startsWith("-", 1)) {
27 argName = args[i].substring(2, args[i].length()); 29 argName = args[i].substring(2, args[i].length());
28 } else { 30 } else {
29 argName = args[i].substring(1, args[i].length()); 31 argName = args[i].substring(1, args[i].length());
30 } 32 }
31 try { 33 try {
32 if ("output-dir".equals(argName)) { 34 if ("process-file".equals(argName)) {
35 // Read the two command line arguments after the flag.
36 // Format is --process-file <template file> <output file >.
37 // Argument can be passed multiple times.
38 Path templatePath = Paths.get(args[++i]);
39 Path outputPath = Paths.get(args[++i]);
40 parsed.addTemplateFileInfo(
41 new TemplateFileInfo(templatePath, outputPath));
42 } else if ("api-level".equals(argName)) {
33 // Read the command line argument after the flag. 43 // Read the command line argument after the flag.
34 parsed.setOutputDir(args[++i]); 44 parsed.setApiLevel(args[++i]);
35 } else if ("base-template-dir".equals(argName)) { 45 } else if ("base-template-dir".equals(argName)) {
36 // Read the command line argument after the flag. 46 // Read the command line argument after the flag.
37 parsed.setBaseTemplateDir(args[++i]); 47 parsed.setBaseTemplateDir(args[++i]);
38 } else if ("api-level".equals(argName)) {
39 // Read the command line argument after the flag.
40 parsed.setApiLevel(args[++i]);
41 } else { 48 } else {
42 System.out.println("Ignoring flag: \"" + argName + "\"") ; 49 System.out.println("Ignoring flag: \"" + argName + "\"") ;
43 } 50 }
44 } catch (ArrayIndexOutOfBoundsException e) { 51 } catch (ArrayIndexOutOfBoundsException e) {
45 System.err.println("No value specified for argument \"" + ar gName + "\""); 52 System.err.println("No value specified for argument \"" + ar gName + "\"");
46 System.exit(1); 53 System.exit(1);
47 } 54 }
48 } else { 55 } else {
49 System.out.println("Ignoring argument: \"" + args[i] + "\""); 56 System.out.println("Ignoring argument: \"" + args[i] + "\"");
50 } 57 }
51 } 58 }
52 59
53 if (parsed.getOutputDir() == null) {
54 System.err.println("--output-dir argument required.");
55 System.exit(1);
56 }
57
58 if (parsed.getBaseTemplateDir() == null) { 60 if (parsed.getBaseTemplateDir() == null) {
59 System.err.println("--base-template-dir argument required."); 61 System.err.println("--base-template-dir argument required.");
60 System.exit(1); 62 System.exit(1);
61 } 63 }
62 64
63 if (parsed.getApiLevel() == null) { 65 if (parsed.getApiLevel() == null) {
64 System.err.println("--api-level argument required."); 66 System.err.println("--api-level argument required.");
65 System.exit(1); 67 System.exit(1);
66 } 68 }
67 return parsed; 69 return parsed;
68 } 70 }
69 71
70 private ProcessTemplateArgParser() { 72 private ProcessTemplateArgParser() {
73 mApiLevel = null;
71 mBaseTemplateDir = null; 74 mBaseTemplateDir = null;
72 mOutputDir = null; 75 mOutputDir = null;
73 mApiLevel = null; 76 mTemplateFileInfoList = new LinkedList<TemplateFileInfo>();
77 }
78
79 public Integer getApiLevel() {
80 return mApiLevel;
74 } 81 }
75 82
76 public Path getBaseTemplateDir() { 83 public Path getBaseTemplateDir() {
77 return mBaseTemplateDir; 84 return mBaseTemplateDir;
78 } 85 }
79 86
80 public Path getOutputDir() { 87 public List<TemplateFileInfo> getTemplateFileInfoList() {
81 return mOutputDir; 88 return mTemplateFileInfoList;
82 } 89 }
83 90
84 public Integer getApiLevel() { 91 private void setApiLevel(String integer) {
85 return mApiLevel; 92 mApiLevel = Integer.parseInt(integer);
86 } 93 }
87 94
88 private void setBaseTemplateDir(String path) { 95 private void setBaseTemplateDir(String path) {
89 mBaseTemplateDir = Paths.get(path); 96 mBaseTemplateDir = Paths.get(path);
90 } 97 }
91 98
92 private void setOutputDir(String path) { 99 private void addTemplateFileInfo(TemplateFileInfo templateFileInfo) {
93 mOutputDir = Paths.get(path); 100 mTemplateFileInfoList.add(templateFileInfo);
94 }
95
96 private void setApiLevel(String integer) {
97 mApiLevel = Integer.parseInt(integer);
98 } 101 }
99 } 102 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698