initial remove support
authorEugene Petrenko <eugene.petrenko@gmail.com>
Mon, 15 Aug 2011 20:48:14 +0000 (00:48 +0400)
committerEugene Petrenko <eugene.petrenko@gmail.com>
Mon, 15 Aug 2011 20:48:14 +0000 (00:48 +0400)
nuget-server/src/jetbrains/buildServer/nuget/server/toolRegistry/NuGetToolManager.java
nuget-server/src/jetbrains/buildServer/nuget/server/toolRegistry/impl/NuGetToolManagerImpl.java
nuget-server/src/jetbrains/buildServer/nuget/server/toolRegistry/impl/NuGetToolsInstaller.java
nuget-server/src/jetbrains/buildServer/nuget/server/toolRegistry/impl/ToolsRegistry.java

index ba0d0f2894501bb70521fec9a4ebe0a5abbbe84d..5f52df7f2f2bd81205fbf2fc1a8d5e39f357eac7 100644 (file)
@@ -29,7 +29,7 @@ public interface NuGetToolManager {
    * @return list of installed nuget tools\r
    */\r
   @NotNull\r
-  Collection<NuGetInstalledTool> getInstalledTools();\r
+  Collection<? extends NuGetInstalledTool> getInstalledTools();\r
 \r
   /**\r
    * @return list of tools that are installing now\r
@@ -52,4 +52,10 @@ public interface NuGetToolManager {
   void installTool(@NotNull String toolId);\r
 \r
 \r
+  /**\r
+   * Removes tool from server and build agents\r
+   * @param toolId tool id from {@link #getInstalledTools()} method\r
+   */\r
+  void removeTool(@NotNull String toolId);\r
+\r
 }\r
index cbca2719d3c58e452c09d8f7416be71283d0ba57..8e13e8fece38b8af1aeb2ddd3a54d79e969ddf4d 100644 (file)
@@ -47,7 +47,7 @@ public class NuGetToolManagerImpl implements NuGetToolManager {
   }\r
 \r
   @NotNull\r
-  public Collection<NuGetInstalledTool> getInstalledTools() {\r
+  public Collection<? extends NuGetInstalledTool> getInstalledTools() {\r
     return myInstalled.getTools();\r
   }\r
 \r
@@ -80,6 +80,10 @@ public class NuGetToolManagerImpl implements NuGetToolManager {
                     }));\r
   }\r
 \r
+  public void removeTool(@NotNull String toolId) {\r
+    myInstalled.removeTool(toolId);\r
+  }\r
+\r
   private List<NuGetInstallingTool> mockInstallingTools() {\r
     return Arrays.<NuGetInstallingTool>asList(\r
             new NuGetInstallingTool() {\r
index 1065dbbe571fd8d0d3b9674b309f722f70a9c37d..af6f5787720da1d9311c4d33f1fc9cbf66410571 100644 (file)
@@ -22,7 +22,6 @@ import jetbrains.buildServer.nuget.server.feed.reader.NuGetFeedReader;
 import jetbrains.buildServer.util.ArchiveUtil;\r
 import jetbrains.buildServer.util.FileUtil;\r
 import org.jetbrains.annotations.NotNull;\r
-import org.jetbrains.annotations.Nullable;\r
 \r
 import java.io.*;\r
 import java.util.zip.ZipInputStream;\r
@@ -49,17 +48,12 @@ public class NuGetToolsInstaller {
     myPacker = packer;\r
   }\r
 \r
-  @Nullable\r
-  private FeedPackage findTool(@NotNull final String packageId) {\r
-    return myState.findTool(packageId);\r
-  }\r
-\r
   public InstallResult installNuGet(@NotNull final String packageId, @NotNull final InstallLogger logger) {\r
     logger.started(packageId);\r
 \r
     FeedPackage tool = null;\r
     try {\r
-      tool = findTool(packageId);\r
+      tool = myState.findTool(packageId);\r
       if (tool == null) {\r
         logger.packageNotFound(packageId);\r
         return null;\r
index 1ca113ed8dc56c654bc3d0b0679734cb05381079..a72f2aaa9abb91c77ed6aa47432a41591b8a0ba7 100644 (file)
@@ -17,6 +17,7 @@
 package jetbrains.buildServer.nuget.server.toolRegistry.impl;\r
 \r
 import jetbrains.buildServer.nuget.server.toolRegistry.NuGetInstalledTool;\r
+import jetbrains.buildServer.util.FileUtil;\r
 import org.jetbrains.annotations.NotNull;\r
 \r
 import java.io.File;\r
@@ -36,28 +37,55 @@ public class ToolsRegistry {
   }\r
 \r
   @NotNull\r
-  public Collection<NuGetInstalledTool> getTools() {\r
+  public Collection<? extends NuGetInstalledTool> getTools() {\r
+    return getToolsInternal();\r
+  }\r
+\r
+  private Collection<InstalledTool> getToolsInternal() {\r
     final File[] tools = myPaths.getTools().listFiles();\r
     if (tools == null) return Collections.emptyList();\r
-    final Collection<NuGetInstalledTool> result = new ArrayList<NuGetInstalledTool>();\r
+    final Collection<InstalledTool> result = new ArrayList<InstalledTool>();\r
     for (final File path : tools) {\r
-      result.add(new NuGetInstalledTool() {\r
-        @NotNull\r
-        public File getPath() {\r
-          return new File(path, "tools/NuGet.exe");\r
-        }\r
-\r
-        @NotNull\r
-        public String getId() {\r
-          return path.getName();\r
-        }\r
-\r
-        @NotNull\r
-        public String getVersion() {\r
-          return path.getName();\r
-        }\r
-      });\r
+      result.add(new InstalledTool(path));\r
     }\r
     return result;\r
   }\r
+\r
+  public void removeTool(@NotNull final String toolId) {\r
+    for (InstalledTool tool : getToolsInternal()) {\r
+      if (tool.getId().equals(toolId)) {\r
+        tool.delete();\r
+        return;\r
+      }\r
+    }\r
+  }\r
+\r
+  private static class InstalledTool implements NuGetInstalledTool {\r
+    private final File myPath;\r
+\r
+    public InstalledTool(@NotNull final File path) {\r
+      myPath = path;\r
+    }\r
+\r
+    public void delete() {\r
+      while(myPath.exists()) {\r
+        FileUtil.delete(myPath);\r
+      }\r
+    }\r
+\r
+    @NotNull\r
+    public File getPath() {\r
+      return new File(myPath, "tools/NuGet.exe");\r
+    }\r
+\r
+    @NotNull\r
+    public String getId() {\r
+      return myPath.getName();\r
+    }\r
+\r
+    @NotNull\r
+    public String getVersion() {\r
+      return myPath.getName();\r
+    }\r
+  }\r
 }\r