support NuGet tools on agent side
authorEugene Petrenko <eugene.petrenko@gmail.com>
Tue, 16 Aug 2011 06:18:01 +0000 (10:18 +0400)
committerEugene Petrenko <eugene.petrenko@gmail.com>
Tue, 16 Aug 2011 06:18:01 +0000 (10:18 +0400)
nuget-agent/src/jetbrains/buildServer/nuget/agent/parameters/impl/PackagesParametersFactoryImpl.java
nuget-common/src/jetbrains/buildServer/nuget/common/PackagesConstants.java
nuget-server/src/jetbrains/buildServer/nuget/server/toolRegistry/impl/PluginNaming.java
nuget-server/src/jetbrains/buildServer/nuget/server/toolRegistry/impl/ToolsRegistry.java

index 8622db8608c571c3e9f74d25d1d3b4eedc64fa4a..ef31a044bb6d3f4725ba9fa419180171a635d4a5 100644 (file)
@@ -18,6 +18,8 @@ package jetbrains.buildServer.nuget.agent.parameters.impl;
 \r
 import jetbrains.buildServer.RunBuildException;\r
 import jetbrains.buildServer.agent.BuildRunnerContext;\r
+import jetbrains.buildServer.agent.BundledTool;\r
+import jetbrains.buildServer.agent.BundledToolsRegistry;\r
 import jetbrains.buildServer.nuget.agent.parameters.*;\r
 import jetbrains.buildServer.nuget.common.PackagesUpdateMode;\r
 import jetbrains.buildServer.util.FileUtil;\r
@@ -37,6 +39,12 @@ import static jetbrains.buildServer.nuget.common.PackagesConstants.*;
  * Date: 07.07.11 18:09\r
  */\r
 public class PackagesParametersFactoryImpl implements PackagesParametersFactory {\r
+  private final BundledToolsRegistry myBundledTools;\r
+\r
+  public PackagesParametersFactoryImpl(@NotNull final BundledToolsRegistry bundledTools) {\r
+    myBundledTools = bundledTools;\r
+  }\r
+\r
   @NotNull\r
   public NuGetFetchParameters loadNuGetFetchParameters(@NotNull final BuildRunnerContext context) throws RunBuildException {\r
     return new NuGetFetchParameters() {\r
@@ -47,7 +55,7 @@ public class PackagesParametersFactoryImpl implements PackagesParametersFactory
 \r
       @NotNull\r
       public File getNuGetExeFile() throws RunBuildException {\r
-        return getFile(context, NUGET_PATH, "nuget.exe");\r
+        return getPathToNuGet(context);\r
       }\r
 \r
       @NotNull\r
@@ -61,6 +69,26 @@ public class PackagesParametersFactoryImpl implements PackagesParametersFactory
     };\r
   }\r
 \r
+  private File getPathToNuGet(BuildRunnerContext context) throws RunBuildException {\r
+    String path = getParameter(context, NUGET_PATH);\r
+    if (StringUtil.isEmptyOrSpaces(path))\r
+      throw new RunBuildException("Runner parameter '" + NUGET_PATH + "' was not found");\r
+\r
+    if (path.startsWith("?")) {\r
+      final BundledTool tool = myBundledTools.findTool(NUGET_TOOL_NAME_PREFIX + path.substring(1));\r
+      if (tool != null) {\r
+        path = new File(tool.getRootPath(), NUGET_TOOL_REL_PATH).getPath();\r
+      }\r
+    }\r
+\r
+    File file = FileUtil.resolvePath(context.getBuild().getCheckoutDirectory(), path);\r
+    if (!file.exists()) {\r
+      throw new RunBuildException("Failed to find " + "nuget.exe" + " at " + file);\r
+    }\r
+\r
+    return file;\r
+  }\r
+\r
   @NotNull\r
   private File getFile(@NotNull final BuildRunnerContext context,\r
                        @NotNull final String runnerParameter,\r
@@ -166,7 +194,7 @@ public class PackagesParametersFactoryImpl implements PackagesParametersFactory
 \r
       @NotNull\r
       public File getNuGetExeFile() throws RunBuildException {\r
-        return getFile(context, NUGET_PATH, "nuget.exe");\r
+        return getPathToNuGet(context);\r
       }\r
     };\r
   }\r
index 40e2e78b7c139ab1e02f9b742397dfdd15a6c98d..aff6818218fce65c2a2ecdf84e663b42211d0a1a 100644 (file)
@@ -46,4 +46,8 @@ public interface PackagesConstants {
   public static final String NUGET_PUBLISH_FILES = "nuget.publish.files";\r
   public static final String NUGET_PUBLISH_SOURCE = "nuget.publish.source";\r
   public static final String NUGET_API_KEY = Constants.SECURE_PROPERTY_PREFIX + "nuget.api.key";\r
+\r
+\r
+  public static final String NUGET_TOOL_NAME_PREFIX = "nuget-commnadline-";\r
+  public static final String NUGET_TOOL_REL_PATH = "tools/NuGet.exe";\r
 }\r
index 2df7d48046cb150a3caf1ba99d1da9b54a7c857e..02c65e179c511b472977ad9cb7edfcf4afea3bc3 100644 (file)
@@ -16,6 +16,7 @@
 \r
 package jetbrains.buildServer.nuget.server.toolRegistry.impl;\r
 \r
+import jetbrains.buildServer.nuget.common.PackagesConstants;\r
 import jetbrains.buildServer.nuget.server.feed.reader.FeedPackage;\r
 import jetbrains.buildServer.nuget.server.toolRegistry.NuGetTool;\r
 import org.jetbrains.annotations.NotNull;\r
@@ -35,7 +36,7 @@ public class PluginNaming {
 \r
   @NotNull\r
   private String getAgentToolFileName(@NotNull String version) {\r
-    return "nuget-commnadline-" + version + ".zip";\r
+    return PackagesConstants.NUGET_TOOL_NAME_PREFIX + version + ".zip";\r
   }\r
 \r
   public File getAgentToolFilePath(@NotNull NuGetTool tool) {\r
index 5b02885ed4f6d61aa79ccf7e274967693800fed6..d0c9982512812f6115eeac6ce95aaae527fa0f2e 100644 (file)
@@ -17,6 +17,7 @@
 package jetbrains.buildServer.nuget.server.toolRegistry.impl;\r
 \r
 import com.intellij.openapi.diagnostic.Logger;\r
+import jetbrains.buildServer.nuget.common.PackagesConstants;\r
 import jetbrains.buildServer.nuget.server.toolRegistry.NuGetInstalledTool;\r
 import jetbrains.buildServer.util.FileUtil;\r
 import org.jetbrains.annotations.NotNull;\r
@@ -97,7 +98,7 @@ public class ToolsRegistry {
 \r
     @NotNull\r
     public File getPath() {\r
-      return new File(myPath, "tools/NuGet.exe");\r
+      return FileUtil.getCanonicalFile(new File(myPath, PackagesConstants.NUGET_TOOL_REL_PATH));\r
     }\r
 \r
     @NotNull\r