fix nuget tools filter
[teamcity/dotNetPackagesSupport.git] / nuget-server / src / jetbrains / buildServer / nuget / server / toolRegistry / impl / ToolsRegistry.java
1 /*\r
2  * Copyright 2000-2011 JetBrains s.r.o.\r
3  *\r
4  * Licensed under the Apache License, Version 2.0 (the "License");\r
5  * you may not use this file except in compliance with the License.\r
6  * You may obtain a copy of the License at\r
7  *\r
8  * http://www.apache.org/licenses/LICENSE-2.0\r
9  *\r
10  * Unless required by applicable law or agreed to in writing, software\r
11  * distributed under the License is distributed on an "AS IS" BASIS,\r
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
13  * See the License for the specific language governing permissions and\r
14  * limitations under the License.\r
15  */\r
16 \r
17 package jetbrains.buildServer.nuget.server.toolRegistry.impl;\r
18 \r
19 import com.intellij.openapi.diagnostic.Logger;\r
20 import jetbrains.buildServer.nuget.common.PackagesConstants;\r
21 import jetbrains.buildServer.nuget.server.toolRegistry.NuGetInstalledTool;\r
22 import jetbrains.buildServer.util.FileUtil;\r
23 import org.jetbrains.annotations.NotNull;\r
24 \r
25 import java.io.File;\r
26 import java.util.ArrayList;\r
27 import java.util.Collection;\r
28 import java.util.Collections;\r
29 \r
30 /**\r
31  * Created by Eugene Petrenko (eugene.petrenko@gmail.com)\r
32  * Date: 16.08.11 0:25\r
33  */\r
34 public class ToolsRegistry {\r
35   private static final Logger LOG = Logger.getInstance(ToolsRegistry.class.getName());\r
36   private final ToolPaths myPaths;\r
37   private final PluginNaming myNaming;\r
38 \r
39   public ToolsRegistry(@NotNull final ToolPaths paths,\r
40                        @NotNull final PluginNaming naming) {\r
41     myPaths = paths;\r
42     myNaming = naming;\r
43   }\r
44 \r
45   @NotNull\r
46   public Collection<? extends NuGetInstalledTool> getTools() {\r
47     return getToolsInternal();\r
48   }\r
49 \r
50   private Collection<InstalledTool> getToolsInternal() {\r
51     final File[] tools = myPaths.getTools().listFiles();\r
52     if (tools == null) return Collections.emptyList();\r
53     final Collection<InstalledTool> result = new ArrayList<InstalledTool>();\r
54     for (final File path : tools) {\r
55       final InstalledTool e = new InstalledTool(path);\r
56       if (!e.getPath().isFile()) {\r
57         LOG.warn("NuGet.exe is not found at " + e);\r
58         continue;\r
59       }\r
60 \r
61       if (!myNaming.getAgentToolFilePath(e).isFile()) {\r
62         LOG.warn("NuGet tool is not packed for agent. " + e);\r
63         continue;\r
64       }\r
65       result.add(e);\r
66     }\r
67     return result;\r
68   }\r
69 \r
70   public void removeTool(@NotNull final String toolId) {\r
71     for (InstalledTool tool : getToolsInternal()) {\r
72       if (tool.getId().equals(toolId)) {\r
73         LOG.info("Removing NuGet plugin: " + tool);\r
74 \r
75         final File agentPlugin = myNaming.getAgentToolFilePath(tool);\r
76         LOG.info("Removing NuGet plugin agent tool : " + agentPlugin);\r
77         FileUtil.delete(agentPlugin);\r
78 \r
79         final File toolHome = tool.getRootPath();\r
80         LOG.info("Removing NuGet files from: " + toolHome);\r
81         FileUtil.delete(toolHome);\r
82         return;\r
83       }\r
84     }\r
85   }\r
86 \r
87   private static class InstalledTool implements NuGetInstalledTool {\r
88     private final File myPath;\r
89 \r
90     public InstalledTool(@NotNull final File path) {\r
91       myPath = path;\r
92     }\r
93 \r
94     @NotNull\r
95     public File getRootPath() {\r
96       return myPath;\r
97     }\r
98 \r
99     @NotNull\r
100     public File getPath() {\r
101       return FileUtil.getCanonicalFile(new File(myPath, PackagesConstants.NUGET_TOOL_REL_PATH));\r
102     }\r
103 \r
104     @NotNull\r
105     public String getId() {\r
106       return myPath.getName();\r
107     }\r
108 \r
109     @NotNull\r
110     public String getVersion() {\r
111       return myPath.getName();\r
112     }\r
113 \r
114     @Override\r
115     public String toString() {\r
116       return "InstalledTool{version=" + getVersion() +\r
117               ", myPath=" + myPath +\r
118               '}';\r
119     }\r
120   }\r
121 }\r