Index: third_party/WebKit/Source/devtools/scripts/closure/closure_runner/src/org/chromium/devtools/compiler/Runner.java |
diff --git a/third_party/WebKit/Source/devtools/scripts/closure/closure_runner/src/org/chromium/devtools/compiler/Runner.java b/third_party/WebKit/Source/devtools/scripts/closure/closure_runner/src/org/chromium/devtools/compiler/Runner.java |
deleted file mode 100644 |
index 06c0d74b1a7113bdd627017f7f60f2db2820d2e0..0000000000000000000000000000000000000000 |
--- a/third_party/WebKit/Source/devtools/scripts/closure/closure_runner/src/org/chromium/devtools/compiler/Runner.java |
+++ /dev/null |
@@ -1,243 +0,0 @@ |
-package org.chromium.devtools.compiler; |
- |
-import com.google.common.collect.Lists; |
-import com.google.common.io.Resources; |
-import com.google.javascript.jscomp.*; |
- |
-import org.kohsuke.args4j.CmdLineException; |
-import org.kohsuke.args4j.CmdLineParser; |
-import org.kohsuke.args4j.Option; |
- |
-import javax.xml.transform.Source; |
-import java.io.*; |
-import java.util.ArrayList; |
-import java.util.Arrays; |
-import java.util.List; |
-import java.util.concurrent.Callable; |
-import java.util.concurrent.ExecutorService; |
-import java.util.concurrent.Executors; |
-import java.util.concurrent.Future; |
-import java.util.regex.Matcher; |
-import java.util.regex.Pattern; |
- |
-/** |
- * Prepares and executes several instances of the closure compiler. |
- */ |
-public class Runner { |
- protected final Flags flags = new Flags(); |
- private final PrintStream err; |
- private boolean isConfigValid; |
- |
- public Runner(String[] args, PrintStream err) { |
- this.err = err; |
- List<String> argList = processArgs(args); |
- CmdLineParser parser = new CmdLineParser(flags); |
- isConfigValid = true; |
- try { |
- parser.parseArgument(argList.toArray(new String[] {})); |
- if (flags.compilerArgsFile == null) { |
- isConfigValid = false; |
- } |
- } catch (CmdLineException e) { |
- err.println(e.getMessage()); |
- isConfigValid = false; |
- } |
- |
- if (!isConfigValid) { |
- parser.printUsage(err); |
- } |
- } |
- |
- private List<String> processArgs(String[] args) { |
- Pattern argPattern = Pattern.compile("(--[a-zA-Z_]+)=(.*)"); |
- Pattern quotesPattern = Pattern.compile("^['\"](.*)['\"]$"); |
- List<String> processedArgs = Lists.newArrayList(); |
- |
- for (String arg : args) { |
- Matcher matcher = argPattern.matcher(arg); |
- if (matcher.matches()) { |
- processedArgs.add(matcher.group(1)); |
- |
- String value = matcher.group(2); |
- Matcher quotesMatcher = quotesPattern.matcher(value); |
- if (quotesMatcher.matches()) { |
- processedArgs.add(quotesMatcher.group(1)); |
- } else { |
- processedArgs.add(value); |
- } |
- } else { |
- processedArgs.add(arg); |
- } |
- } |
- |
- return processedArgs; |
- } |
- |
- private boolean shouldRunCompiler() { |
- return isConfigValid; |
- } |
- |
- protected void logError(String message, Exception e) { |
- err.println("ERROR: " + message); |
- if (e != null) { |
- e.printStackTrace(err); |
- } |
- } |
- |
- private void run() { |
- List<CompilerInstanceDescriptor> descriptors = getDescriptors(); |
- if (descriptors == null) { |
- return; |
- } |
- ExecutorService executor = Executors.newFixedThreadPool( |
- Math.min(descriptors.size(), Runtime.getRuntime().availableProcessors() / 2 + 1)); |
- try { |
- runWithExecutor(descriptors, executor); |
- } finally { |
- executor.shutdown(); |
- } |
- } |
- |
- private void runWithExecutor( |
- List<CompilerInstanceDescriptor> descriptors, ExecutorService executor) { |
- List<Future<CompilerRunner>> futures = new ArrayList<>(descriptors.size()); |
- for (CompilerInstanceDescriptor descriptor : descriptors) { |
- try { |
- ByteArrayOutputStream rawStream = new ByteArrayOutputStream(512); |
- PrintStream errPrintStream = new PrintStream(rawStream, false, "UTF-8"); |
- // We have to create instance of LocalCommandLineRunner object here, |
- // because its constructor should be executed on a single thread. |
- // Constructor is parsing flags and creating options object that can |
- // be used later in parallel during compilation. |
- LocalCommandLineRunner runner = new LocalCommandLineRunner( |
- descriptor.commandLine.split(" +"), System.out, errPrintStream); |
- |
- CompilerRunner task = new CompilerRunner(descriptor, rawStream, runner); |
- futures.add(executor.submit(task)); |
- } catch (Exception e) { |
- System.err.println("ERROR - " + e.getMessage()); |
- e.printStackTrace(System.err); |
- } |
- } |
- |
- for (Future<CompilerRunner> future : futures) { |
- try { |
- CompilerRunner task = future.get(); |
- int result = task.result; |
- if (result != 0) { |
- System.err.println("ERROR: Compiler returned " + result); |
- } |
- task.errStream.flush(); |
- System.err.println("@@ START_MODULE:" + task.descriptor.moduleName + " @@"); |
- System.err.println(task.errStream.toString("UTF-8")); |
- System.err.println("@@ END_MODULE @@"); |
- } catch (Exception e) { |
- System.err.println("ERROR - " + e.getMessage()); |
- e.printStackTrace(System.err); |
- } |
- } |
- System.exit(0); |
- } |
- |
- private List<CompilerInstanceDescriptor> getDescriptors() { |
- List<CompilerInstanceDescriptor> result = new ArrayList<>(); |
- try (BufferedReader reader = new BufferedReader( |
- new InputStreamReader(new FileInputStream(flags.compilerArgsFile), "UTF-8"))) { |
- int lineIndex = 0; |
- while (true) { |
- ++lineIndex; |
- String line = reader.readLine(); |
- if (line == null) { |
- break; |
- } |
- if (line.length() == 0) { |
- continue; |
- } |
- String[] moduleAndArgs = line.split(" +", 2); |
- if (moduleAndArgs.length != 2) { |
- logError(String.format( |
- "Line %d does not contain module name and compiler arguments", |
- lineIndex), |
- null); |
- continue; |
- } |
- result.add(new CompilerInstanceDescriptor(moduleAndArgs[0], moduleAndArgs[1])); |
- } |
- } catch (IOException e) { |
- logError("Failed to read compiler arguments file", e); |
- return null; |
- } |
- |
- return result; |
- } |
- |
- public static void main(String[] args) { |
- Runner runner = new Runner(args, System.err); |
- if (runner.shouldRunCompiler()) { |
- runner.run(); |
- } else { |
- System.exit(-1); |
- } |
- } |
- |
- private static class LocalCommandLineRunner extends CommandLineRunner { |
- protected LocalCommandLineRunner(String[] args, PrintStream out, PrintStream err) { |
- super(args, out, err); |
- } |
- |
- @Override |
- protected void setRunOptions(CompilerOptions options) |
- throws FlagUsageException, IOException { |
- super.setRunOptions(options); |
- options.setCodingConvention(new DevToolsCodingConvention()); |
- } |
- |
- int execute() { |
- try { |
- return doRun(); |
- } catch (Throwable t) { |
- t.printStackTrace(); |
- return -2; |
- } |
- } |
- } |
- |
- private static class CompilerRunner implements Callable<CompilerRunner> { |
- private final CompilerInstanceDescriptor descriptor; |
- private final ByteArrayOutputStream errStream; |
- private int result; |
- private final LocalCommandLineRunner runner; |
- |
- public CompilerRunner(CompilerInstanceDescriptor descriptor, |
- ByteArrayOutputStream errStream, LocalCommandLineRunner runner) { |
- this.descriptor = descriptor; |
- this.errStream = errStream; |
- this.runner = runner; |
- } |
- |
- @Override |
- public CompilerRunner call() throws Exception { |
- if (!this.runner.shouldRunCompiler()) { |
- this.result = -1; |
- } |
- this.result = this.runner.execute(); |
- return this; |
- } |
- } |
- |
- private static class Flags { |
- @Option(name = "--compiler-args-file", |
- usage = "Full path to file containing compiler arguments (one line per instance)") |
- private String compilerArgsFile = null; |
- } |
- |
- private static class CompilerInstanceDescriptor { |
- private final String moduleName; |
- private final String commandLine; |
- |
- public CompilerInstanceDescriptor(String moduleName, String commandLine) { |
- this.moduleName = moduleName; |
- this.commandLine = commandLine; |
- } |
- } |
-} |