|
17 | 17 | import com.google.common.annotations.VisibleForTesting; |
18 | 18 | import com.google.common.base.Preconditions; |
19 | 19 | import com.google.common.base.Strings; |
| 20 | +import com.google.common.collect.ImmutableList; |
20 | 21 | import com.google.common.collect.Lists; |
21 | 22 | import com.google.common.io.Files; |
22 | 23 | import com.google.common.io.Resources; |
@@ -67,6 +68,7 @@ class Options { |
67 | 68 | private File outputFile = new File("tree-shaker-report.txt"); |
68 | 69 | private LibraryInfo summary; |
69 | 70 | private String summaryOutputFile; |
| 71 | + private List<LibraryInfo> summaries = Lists.newArrayList(); |
70 | 72 |
|
71 | 73 | // The default source version number if not passed with -source is determined from the system |
72 | 74 | // properties of the running java version after parsing the argument list. |
@@ -135,11 +137,27 @@ public LibraryInfo getSummary() { |
135 | 137 | public void setSummary(LibraryInfo summary) { |
136 | 138 | this.summary = summary; |
137 | 139 | } |
138 | | - |
| 140 | + |
| 141 | + public List<LibraryInfo> getSummaries() { |
| 142 | + return summaries; |
| 143 | + } |
| 144 | + |
| 145 | + public void setSummaries(List<LibraryInfo> summaries) { |
| 146 | + this.summaries = summaries; |
| 147 | + } |
| 148 | + |
| 149 | + public void addSummary(LibraryInfo summary) { |
| 150 | + this.summaries.add(summary); |
| 151 | + } |
| 152 | + |
139 | 153 | public String getSummaryOutputFile() { |
140 | 154 | return summaryOutputFile; |
141 | 155 | } |
142 | 156 |
|
| 157 | + public void setSummaryOutputFile(String summaryOutputFile) { |
| 158 | + this.summaryOutputFile = summaryOutputFile; |
| 159 | + } |
| 160 | + |
143 | 161 | private void addManifest(String manifestFile) throws IOException { |
144 | 162 | BufferedReader in = new BufferedReader(new FileReader(new File(manifestFile))); |
145 | 163 | try { |
@@ -192,6 +210,16 @@ public static Options parse(String[] args) throws IOException { |
192 | 210 | return options; |
193 | 211 | } |
194 | 212 |
|
| 213 | + private static List<LibraryInfo> readSummaries(List<String> summaries) throws IOException { |
| 214 | + List<LibraryInfo> result = Lists.newArrayList(); |
| 215 | + for (String summary : summaries) { |
| 216 | + result.add( |
| 217 | + LibraryInfo.parseFrom( |
| 218 | + Files.toByteArray(new File(summary)), ExtensionRegistry.getGeneratedRegistry())); |
| 219 | + } |
| 220 | + return result; |
| 221 | + } |
| 222 | + |
195 | 223 | private static void processArgsFile(String filename, Options options) throws IOException { |
196 | 224 | if (filename.isEmpty()) { |
197 | 225 | usage("no @ file specified"); |
@@ -220,6 +248,11 @@ private static void processArgs(String[] args, Options options) throws IOExcepti |
220 | 248 | usage("-classpath requires an argument"); |
221 | 249 | } |
222 | 250 | options.classpath = args[nArg]; |
| 251 | + } else if (arg.equals("-summaries")) { |
| 252 | + if (++nArg == args.length) { |
| 253 | + usage("--summaries requires an argument"); |
| 254 | + } |
| 255 | + options.setSummaries(readSummaries(ImmutableList.copyOf(args[nArg].split(":")))); |
223 | 256 | } else if (arg.equals("-summary")) { |
224 | 257 | if (++nArg == args.length) { |
225 | 258 | usage("-summary requires an argument"); |
|
0 commit comments