annotate agent/src/jetbrains/buildServer/symbols/tools/JetSymbolsExe.java @ 27:76ed2d58c871

- reused home path between all srcsrv-related utilities - extracted JetSymbols utility class
author Evgeniy.Koshkin
date Wed, 07 Aug 2013 18:37:23 +0400
parents
children a5f3d4f24843
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
27
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
1 package jetbrains.buildServer.symbols.tools;
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
2
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
3 import com.intellij.execution.configurations.GeneralCommandLine;
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
4 import jetbrains.buildServer.ExecResult;
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
5 import jetbrains.buildServer.SimpleCommandLineProcessRunner;
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
6 import jetbrains.buildServer.agent.BuildProgressLogger;
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
7
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
8 import java.io.File;
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
9 import java.util.Collection;
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
10
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
11 /**
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
12 * @author Evgeniy.Koshkin
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
13 */
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
14 public class JetSymbolsExe {
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
15
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
16 private static final String SYMBOLS_EXE = "JetBrains.CommandLine.Symbols.exe";
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
17 private static final String DUMP_SYMBOL_SIGN_CMD = "dumpSymbolSign";
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
18 private final File myExePath;
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
19
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
20 public JetSymbolsExe(File homeDir) {
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
21 myExePath = new File(homeDir, SYMBOLS_EXE);
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
22 }
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
23
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
24 public void dumpGuidsToFile(Collection<File> files, File output, BuildProgressLogger buildLogger){
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
25 final GeneralCommandLine commandLine = new GeneralCommandLine();
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
26 commandLine.setExePath(myExePath.getPath());
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
27 commandLine.addParameter(DUMP_SYMBOL_SIGN_CMD);
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
28 commandLine.addParameter(String.format("/o=\"%s\"", output.getPath()));
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
29 for(File file : files){
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
30 commandLine.addParameter(file.getPath());
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
31 }
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
32 buildLogger.message(String.format("Running command %s", commandLine.getCommandLineString()));
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
33 final ExecResult execResult = SimpleCommandLineProcessRunner.runCommand(commandLine, null);
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
34 final String stdout = execResult.getStdout();
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
35 if(!stdout.isEmpty()){
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
36 buildLogger.message("Stdout: " + stdout);
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
37 }
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
38 if (execResult.getExitCode() == 0) return;
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
39 buildLogger.warning(String.format("%s ends with non-zero exit code.", SYMBOLS_EXE));
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
40 buildLogger.warning("Stdout: " + stdout);
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
41 buildLogger.warning("Stderr: " + execResult.getStderr());
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
42 buildLogger.exception(execResult.getException());
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
43 }
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
44 }