fix nuget tools filter
[teamcity/dotNetPackagesSupport.git] / nuget-server / src / jetbrains / buildServer / nuget / server / toolRegistry / impl / ToolsRegistry.java
index a72f2aaa9abb91c77ed6aa47432a41591b8a0ba7..57198d5581bed4f3f34312cb1b4ff0d564c95879 100644 (file)
@@ -16,6 +16,8 @@
 \r
 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
@@ -30,10 +32,14 @@ import java.util.Collections;
  * Date: 16.08.11 0:25\r
  */\r
 public class ToolsRegistry {\r
+  private static final Logger LOG = Logger.getInstance(ToolsRegistry.class.getName());\r
   private final ToolPaths myPaths;\r
+  private final PluginNaming myNaming;\r
 \r
-  public ToolsRegistry(@NotNull final ToolPaths paths) {\r
+  public ToolsRegistry(@NotNull final ToolPaths paths,\r
+                       @NotNull final PluginNaming naming) {\r
     myPaths = paths;\r
+    myNaming = naming;\r
   }\r
 \r
   @NotNull\r
@@ -46,7 +52,17 @@ public class ToolsRegistry {
     if (tools == null) return Collections.emptyList();\r
     final Collection<InstalledTool> result = new ArrayList<InstalledTool>();\r
     for (final File path : tools) {\r
-      result.add(new InstalledTool(path));\r
+      final InstalledTool e = new InstalledTool(path);\r
+      if (!e.getPath().isFile()) {\r
+        LOG.warn("NuGet.exe is not found at " + e);\r
+        continue;\r
+      }\r
+\r
+      if (!myNaming.getAgentToolFilePath(e).isFile()) {\r
+        LOG.warn("NuGet tool is not packed for agent. " + e);\r
+        continue;\r
+      }\r
+      result.add(e);\r
     }\r
     return result;\r
   }\r
@@ -54,7 +70,15 @@ public class ToolsRegistry {
   public void removeTool(@NotNull final String toolId) {\r
     for (InstalledTool tool : getToolsInternal()) {\r
       if (tool.getId().equals(toolId)) {\r
-        tool.delete();\r
+        LOG.info("Removing NuGet plugin: " + tool);\r
+\r
+        final File agentPlugin = myNaming.getAgentToolFilePath(tool);\r
+        LOG.info("Removing NuGet plugin agent tool : " + agentPlugin);\r
+        FileUtil.delete(agentPlugin);\r
+\r
+        final File toolHome = tool.getRootPath();\r
+        LOG.info("Removing NuGet files from: " + toolHome);\r
+        FileUtil.delete(toolHome);\r
         return;\r
       }\r
     }\r
@@ -67,15 +91,14 @@ public class ToolsRegistry {
       myPath = path;\r
     }\r
 \r
-    public void delete() {\r
-      while(myPath.exists()) {\r
-        FileUtil.delete(myPath);\r
-      }\r
+    @NotNull\r
+    public File getRootPath() {\r
+      return myPath;\r
     }\r
 \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
@@ -87,5 +110,12 @@ public class ToolsRegistry {
     public String getVersion() {\r
       return myPath.getName();\r
     }\r
+\r
+    @Override\r
+    public String toString() {\r
+      return "InstalledTool{version=" + getVersion() +\r
+              ", myPath=" + myPath +\r
+              '}';\r
+    }\r
   }\r
 }\r