diff agent/src/jetbrains/buildServer/symbols/SymbolsIndexer.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 87b24e4efcc3
children b983676b66f9
line wrap: on
line diff
--- a/agent/src/jetbrains/buildServer/symbols/SymbolsIndexer.java	Wed Aug 07 17:29:18 2013 +0400
+++ b/agent/src/jetbrains/buildServer/symbols/SymbolsIndexer.java	Wed Aug 07 18:37:23 2013 +0400
@@ -1,13 +1,11 @@
 package jetbrains.buildServer.symbols;
 
-import com.intellij.execution.configurations.GeneralCommandLine;
-import jetbrains.buildServer.ExecResult;
-import jetbrains.buildServer.SimpleCommandLineProcessRunner;
 import jetbrains.buildServer.agent.*;
 import jetbrains.buildServer.agent.artifacts.ArtifactsWatcher;
 import jetbrains.buildServer.agent.impl.artifacts.ArtifactsBuilderAdapter;
 import jetbrains.buildServer.agent.impl.artifacts.ArtifactsCollection;
 import jetbrains.buildServer.agent.plugins.beans.PluginDescriptor;
+import jetbrains.buildServer.symbols.tools.JetSymbolsExe;
 import jetbrains.buildServer.util.EventDispatcher;
 import jetbrains.buildServer.util.FileUtil;
 import org.apache.log4j.Logger;
@@ -16,7 +14,9 @@
 
 import java.io.File;
 import java.io.IOException;
-import java.util.*;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.List;
 import java.util.concurrent.CopyOnWriteArrayList;
 
 /**
@@ -28,17 +28,14 @@
 
   public static final String PDB_FILE_EXTENSION = "pdb";
 
-  public static final String SYMBOLS_EXE = "JetBrains.CommandLine.Symbols.exe";
-  public static final String DUMP_SYMBOL_SIGN_CMD = "dumpSymbolSign";
-
   @NotNull private final ArtifactsWatcher myArtifactsWatcher;
-  @NotNull private final File myNativeToolPath;
+  @NotNull private final JetSymbolsExe myJetSymbolsExe;
   @Nullable private AgentRunningBuild myBuild;
   @Nullable private Collection<File> mySymbolsToProcess;
 
   public SymbolsIndexer(@NotNull final PluginDescriptor pluginDescriptor, @NotNull final EventDispatcher<AgentLifeCycleListener> agentDispatcher, @NotNull final ArtifactsWatcher artifactsWatcher) {
     myArtifactsWatcher = artifactsWatcher;
-    myNativeToolPath = new File(new File(pluginDescriptor.getPluginRoot(), "bin"), SYMBOLS_EXE);
+    myJetSymbolsExe = new JetSymbolsExe(new File(pluginDescriptor.getPluginRoot(), "bin"));
 
     agentDispatcher.addListener(new AgentLifeCycleAdapter() {
       @Override
@@ -58,7 +55,8 @@
           LOG.debug("Symbols weren't found in artifacts to be published.");
         } else {
           try {
-            final File symbolSignaturesFile = dumpSymbolSignatures(mySymbolsToProcess, myBuild.getBuildTempDirectory(), myBuild.getBuildLogger());
+            final File symbolSignaturesFile = FileUtil.createTempFile(myBuild.getBuildTempDirectory(), "symbol-signatures-", ".xml", false);
+            myJetSymbolsExe.dumpGuidsToFile(mySymbolsToProcess, symbolSignaturesFile,  myBuild.getBuildLogger());
             if(symbolSignaturesFile.exists()){
               myArtifactsWatcher.addNewArtifactsPath(symbolSignaturesFile + "=>" + ".teamcity/symbols");
             }
@@ -131,31 +129,4 @@
     }
     return result;
   }
-
-  private File dumpSymbolSignatures(Collection<File> files, File targetDir, BuildProgressLogger buildLogger) throws IOException {
-    final File tempFile = FileUtil.createTempFile(targetDir, "symbol-signatures-", ".xml", false);
-    runNativeTool(DUMP_SYMBOL_SIGN_CMD, files, tempFile, buildLogger);
-    return tempFile;
-  }
-
-  private void runNativeTool(String cmd, Collection<File> files, File output, BuildProgressLogger buildLogger){
-    final GeneralCommandLine commandLine = new GeneralCommandLine();
-    commandLine.setExePath(myNativeToolPath.getPath());
-    commandLine.addParameter(cmd);
-    commandLine.addParameter(String.format("/o=\"%s\"", output.getPath()));
-    for(File file : files){
-      commandLine.addParameter(file.getPath());
-    }
-    buildLogger.message(String.format("Running command %s", commandLine.getCommandLineString()));
-    final ExecResult execResult = SimpleCommandLineProcessRunner.runCommand(commandLine, null);
-    final String stdout = execResult.getStdout();
-    if(!stdout.isEmpty()){
-      buildLogger.message("Stdout: " + stdout);
-    }
-    if (execResult.getExitCode() == 0) return;
-    buildLogger.warning(String.format("%s ends with non-zero exit code.", SYMBOLS_EXE));
-    buildLogger.warning("Stdout: " + stdout);
-    buildLogger.warning("Stderr: " + execResult.getStderr());
-    buildLogger.exception(execResult.getException());
-  }
 }