support nuget tools reference in nuget trigger
authorEugene Petrenko <eugene.petrenko@gmail.com>
Tue, 16 Aug 2011 13:40:19 +0000 (17:40 +0400)
committerEugene Petrenko <eugene.petrenko@gmail.com>
Tue, 16 Aug 2011 13:40:19 +0000 (17:40 +0400)
nuget-agent/src/jetbrains/buildServer/nuget/agent/parameters/impl/PackagesParametersFactoryImpl.java
nuget-common/src/jetbrains/buildServer/nuget/common/FeedConstants.java [moved from nuget-server/src/jetbrains/buildServer/nuget/server/feed/reader/FeedConstants.java with 91% similarity]
nuget-server/src/jetbrains/buildServer/nuget/server/toolRegistry/NuGetToolManager.java
nuget-server/src/jetbrains/buildServer/nuget/server/toolRegistry/impl/AvailableToolsStateImpl.java
nuget-server/src/jetbrains/buildServer/nuget/server/toolRegistry/impl/NuGetToolManagerImpl.java
nuget-server/src/jetbrains/buildServer/nuget/server/toolRegistry/impl/ToolsRegistry.java
nuget-server/src/jetbrains/buildServer/nuget/server/trigger/NamedPackagesUpdateChecker.java
nuget-tests/src/jetbrains/buildServer/nuget/tests/integration/FeedReaderTest.java
nuget-tests/src/jetbrains/buildServer/nuget/tests/server/NamedPackagesUpdateCheckerTest.java

index ef31a044bb6d3f4725ba9fa419180171a635d4a5..074936891849c2b4e254b3927257b11ce5251c7b 100644 (file)
@@ -75,7 +75,7 @@ public class PackagesParametersFactoryImpl implements PackagesParametersFactory
       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
+      final BundledTool tool = myBundledTools.findTool(path.substring(1));\r
       if (tool != null) {\r
         path = new File(tool.getRootPath(), NUGET_TOOL_REL_PATH).getPath();\r
       }\r
similarity index 91%
rename from nuget-server/src/jetbrains/buildServer/nuget/server/feed/reader/FeedConstants.java
rename to nuget-common/src/jetbrains/buildServer/nuget/common/FeedConstants.java
index b51bff4eb6d8434df54f8019a0d2fed2ec4369c0..a4651958d618509a2404762a5e57dbfd5a497489 100644 (file)
@@ -14,7 +14,7 @@
  * limitations under the License.\r
  */\r
 \r
-package jetbrains.buildServer.nuget.server.feed.reader;\r
+package jetbrains.buildServer.nuget.common;\r
 \r
 /**\r
  * Created by Eugene Petrenko (eugene.petrenko@gmail.com)\r
index 5f52df7f2f2bd81205fbf2fc1a8d5e39f357eac7..2ef9de8c24c2732d80fb67bbacf0e609a6b30186 100644 (file)
@@ -17,6 +17,7 @@
 package jetbrains.buildServer.nuget.server.toolRegistry;\r
 \r
 import org.jetbrains.annotations.NotNull;\r
+import org.jetbrains.annotations.Nullable;\r
 \r
 import java.util.Collection;\r
 \r
@@ -58,4 +59,11 @@ public interface NuGetToolManager {
    */\r
   void removeTool(@NotNull String toolId);\r
 \r
+  /**\r
+   * Resolves path to NuGet.exe tool\r
+   * @param path path to tool\r
+   * @return resolved path of given path\r
+   */\r
+  @Nullable\r
+  String getNuGetPath(@Nullable String path);\r
 }\r
index ec5b13c6599438193ad74b7100503df3879d8ed5..d52b279fcce0d7b48b8f4d264f8802f626abda71 100644 (file)
@@ -16,7 +16,7 @@
 \r
 package jetbrains.buildServer.nuget.server.toolRegistry.impl;\r
 \r
-import jetbrains.buildServer.nuget.server.feed.reader.FeedConstants;\r
+import jetbrains.buildServer.nuget.common.FeedConstants;\r
 import jetbrains.buildServer.nuget.server.feed.reader.FeedPackage;\r
 import jetbrains.buildServer.nuget.server.feed.reader.NuGetFeedReader;\r
 import jetbrains.buildServer.nuget.server.toolRegistry.FetchException;\r
index 2f691f3296df3744f41d10ad43d9259f55805bc8..0361ff513d214ba0d11cf0df97e97a71ff542947 100644 (file)
 package jetbrains.buildServer.nuget.server.toolRegistry.impl;\r
 \r
 import com.intellij.openapi.diagnostic.Logger;\r
+import jetbrains.buildServer.nuget.common.FeedConstants;\r
 import jetbrains.buildServer.nuget.server.toolRegistry.*;\r
+import jetbrains.buildServer.util.StringUtil;\r
 import org.jetbrains.annotations.NotNull;\r
+import org.jetbrains.annotations.Nullable;\r
 \r
+import java.io.File;\r
 import java.lang.reflect.InvocationHandler;\r
 import java.lang.reflect.Method;\r
 import java.lang.reflect.Proxy;\r
-import java.util.Arrays;\r
 import java.util.Collection;\r
 import java.util.Collections;\r
-import java.util.List;\r
 \r
 /**\r
  * Created by Eugene Petrenko (eugene.petrenko@gmail.com)\r
@@ -84,4 +86,18 @@ public class NuGetToolManagerImpl implements NuGetToolManager {
   public void removeTool(@NotNull String toolId) {\r
     myInstalled.removeTool(toolId);\r
   }\r
+\r
+  @Nullable\r
+  public String getNuGetPath(@Nullable final String path) {\r
+    if (path == null || StringUtil.isEmptyOrSpaces(path)) return path;\r
+    if (!path.startsWith("?")) {\r
+      return path;\r
+    }\r
+    final String id = path.substring(1);\r
+    final File nuGetPath = myInstalled.getNuGetPath(id);\r
+    if (nuGetPath != null) {\r
+      return nuGetPath.getPath();\r
+    }\r
+    throw new RuntimeException("Failed to find " + FeedConstants.NUGET_COMMANDLINE + " version " + id);\r
+  }\r
 }\r
index 50dd816cb5c8a894842251c472145a2a7718f18c..de54323e67bd8aa146cdf49b22db2ae3c722acd1 100644 (file)
@@ -20,7 +20,9 @@ import com.intellij.openapi.diagnostic.Logger;
 import jetbrains.buildServer.nuget.common.PackagesConstants;\r
 import jetbrains.buildServer.nuget.server.toolRegistry.NuGetInstalledTool;\r
 import jetbrains.buildServer.util.FileUtil;\r
+import jetbrains.buildServer.util.StringUtil;\r
 import org.jetbrains.annotations.NotNull;\r
+import org.jetbrains.annotations.Nullable;\r
 \r
 import java.io.File;\r
 import java.io.FileFilter;\r
@@ -52,6 +54,17 @@ public class ToolsRegistry {
     return getToolsInternal();\r
   }\r
 \r
+  @Nullable\r
+  public File getNuGetPath(@NotNull String path) {\r
+    if (StringUtil.isEmptyOrSpaces(path)) return null;\r
+    for (NuGetInstalledTool tool : getToolsInternal()) {\r
+      if (tool.getId().equals(path)) {\r
+        return tool.getPath();\r
+      }\r
+    }\r
+    return null;\r
+  }\r
+\r
   private Collection<InstalledTool> getToolsInternal() {\r
     final File[] tools = myPaths.getPackages().listFiles(IS_PACKAGE);\r
     if (tools == null) return Collections.emptyList();\r
@@ -108,7 +121,7 @@ public class ToolsRegistry {
 \r
     @NotNull\r
     public String getId() {\r
-      return getVersion();\r
+      return myPath.getName();\r
     }\r
 \r
     @NotNull\r
index 280433a7cb65d33157e3b758d5318435baaf491e..233f3a6155a4f9461c669ee2c7279c3850302d5d 100644 (file)
@@ -5,6 +5,7 @@ import jetbrains.buildServer.buildTriggers.BuildTriggerDescriptor;
 import jetbrains.buildServer.buildTriggers.BuildTriggerException;\r
 import jetbrains.buildServer.nuget.server.exec.ListPackagesCommand;\r
 import jetbrains.buildServer.nuget.server.exec.SourcePackageInfo;\r
+import jetbrains.buildServer.nuget.server.toolRegistry.NuGetToolManager;\r
 import jetbrains.buildServer.serverSide.CustomDataStorage;\r
 import jetbrains.buildServer.util.StringUtil;\r
 import org.jetbrains.annotations.NotNull;\r
@@ -21,14 +22,17 @@ public class NamedPackagesUpdateChecker implements TriggerUpdateChecker {
 \r
   public static final String KEY = "hash";\r
   private final ListPackagesCommand myCommand;\r
+  private final NuGetToolManager myManager;\r
 \r
-  public NamedPackagesUpdateChecker(@NotNull final ListPackagesCommand command) {\r
+  public NamedPackagesUpdateChecker(@NotNull final ListPackagesCommand command,\r
+                                    @NotNull final NuGetToolManager manager) {\r
     myCommand = command;\r
+    myManager = manager;\r
   }\r
 \r
   public BuildStartReason checkChanges(@NotNull BuildTriggerDescriptor descriptor,\r
                                        @NotNull CustomDataStorage storage) throws BuildTriggerException {\r
-    final String path = descriptor.getProperties().get(TriggerConstants.NUGET_EXE);\r
+    final String path = myManager.getNuGetPath(descriptor.getProperties().get(TriggerConstants.NUGET_EXE));\r
     final String pkgId = descriptor.getProperties().get(TriggerConstants.PACKAGE);\r
     final String version = descriptor.getProperties().get(TriggerConstants.VERSION);\r
     final String source = descriptor.getProperties().get(TriggerConstants.SOURCE);\r
index 65c59b620079fa7f923f25423f22ada09e51ec16..9afc6043bd296c63734e7db10a0f316b362b3903 100644 (file)
@@ -17,7 +17,7 @@
 package jetbrains.buildServer.nuget.tests.integration;\r
 \r
 import jetbrains.buildServer.BaseTestCase;\r
-import jetbrains.buildServer.nuget.server.feed.reader.FeedConstants;\r
+import jetbrains.buildServer.nuget.common.FeedConstants;\r
 import jetbrains.buildServer.nuget.server.feed.reader.FeedPackage;\r
 import jetbrains.buildServer.nuget.server.feed.reader.NuGetFeedReader;\r
 import jetbrains.buildServer.nuget.server.feed.reader.impl.*;\r
index 41b2454eb4b986e827cb3f3ecc19d7acadeab91e..e23f131726c7a677cd8ba2e1e45beddb096282c7 100644 (file)
@@ -21,6 +21,7 @@ import jetbrains.buildServer.buildTriggers.BuildTriggerDescriptor;
 import jetbrains.buildServer.buildTriggers.BuildTriggerException;\r
 import jetbrains.buildServer.nuget.server.exec.ListPackagesCommand;\r
 import jetbrains.buildServer.nuget.server.exec.SourcePackageInfo;\r
+import jetbrains.buildServer.nuget.server.toolRegistry.NuGetToolManager;\r
 import jetbrains.buildServer.nuget.server.trigger.NamedPackagesUpdateChecker;\r
 import jetbrains.buildServer.nuget.server.trigger.TriggerConstants;\r
 import jetbrains.buildServer.nuget.tests.integration.Paths;\r
@@ -46,6 +47,7 @@ public class NamedPackagesUpdateCheckerTest extends BaseTestCase {
   private NamedPackagesUpdateChecker checker;\r
   private BuildTriggerDescriptor desr;\r
   private CustomDataStorage store;\r
+  private NuGetToolManager manager;\r
   private Map<String, String> params;\r
   private File nugetFakePath;\r
 \r
@@ -59,15 +61,18 @@ public class NamedPackagesUpdateCheckerTest extends BaseTestCase {
     desr = m.mock(BuildTriggerDescriptor.class);\r
     store = m.mock(CustomDataStorage.class);\r
     params = new TreeMap<String, String>();\r
+    manager = m.mock(NuGetToolManager.class);\r
 \r
-    checker = new NamedPackagesUpdateChecker(cmd);\r
+    checker = new NamedPackagesUpdateChecker(cmd, manager);\r
+    nugetFakePath = Paths.getNuGetRunnerPath();\r
+    final String path = nugetFakePath.getPath();\r
 \r
     m.checking(new Expectations(){{\r
       allowing(desr).getProperties(); will(returnValue(params));\r
+      allowing(manager).getNuGetPath(path); will(returnValue(path));\r
     }});\r
-    nugetFakePath = Paths.getNuGetRunnerPath();\r
 \r
-    params.put(TriggerConstants.NUGET_EXE, nugetFakePath.getPath());\r
+    params.put(TriggerConstants.NUGET_EXE, path);\r
     params.put(TriggerConstants.PACKAGE, "NUnit");\r
   }\r
 \r