diff options
Diffstat (limited to 'src/tools/execlog/src/main/java/com/google/devtools/build/execlog/ExecLogParser.java')
-rw-r--r-- | src/tools/execlog/src/main/java/com/google/devtools/build/execlog/ExecLogParser.java | 38 |
1 files changed, 34 insertions, 4 deletions
diff --git a/src/tools/execlog/src/main/java/com/google/devtools/build/execlog/ExecLogParser.java b/src/tools/execlog/src/main/java/com/google/devtools/build/execlog/ExecLogParser.java index 238a30be49..70c583a0cd 100644 --- a/src/tools/execlog/src/main/java/com/google/devtools/build/execlog/ExecLogParser.java +++ b/src/tools/execlog/src/main/java/com/google/devtools/build/execlog/ExecLogParser.java @@ -15,8 +15,8 @@ package com.google.devtools.build.execlog; import com.google.devtools.build.lib.exec.Protos.SpawnExec; import com.google.devtools.common.options.OptionsParser; - import java.io.FileInputStream; +import java.io.IOException; import java.io.InputStream; /** @@ -26,15 +26,45 @@ final class ExecLogParser { static final String DELIMITER = "\n---------------------------------------------------------\n"; + final InputStream in; + final String restrictToRunner; + + ExecLogParser(InputStream in, String restrictToRunner) { + this.in = in; + this.restrictToRunner = restrictToRunner; + } + + public SpawnExec getNext() throws IOException { + SpawnExec ex; + // Find the next record whose runner matches + do { + if (in.available() <= 0) { + // End of file + return null; + } + ex = SpawnExec.parseDelimitedFrom(in); + } while (restrictToRunner != null && !restrictToRunner.equals(ex.getRunner())); + return ex; + } + public static void main(String[] args) throws Exception { OptionsParser op = OptionsParser.newOptionsParser(ParserOptions.class); op.parseAndExitUponError(args); + ParserOptions options = op.getOptions(ParserOptions.class); - InputStream in = new FileInputStream(options.logPath); - while (in.available() > 0) { - SpawnExec ex = SpawnExec.parseDelimitedFrom(in); + if (options.logPath == null) { + System.err.println("--log_path needs to be specified."); + System.exit(1); + } + + ExecLogParser parser = + new ExecLogParser(new FileInputStream(options.logPath), options.restrictToRunner); + + SpawnExec ex; + while ((ex = parser.getNext()) != null) { System.out.println(ex); System.out.println(DELIMITER); } } } + |