add run type for publish packages runner
[teamcity/dotNetPackagesSupport.git] / nuget-server / src / jetbrains / buildServer / nuget / server / publish / PublishRunType.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.publish;\r
18 \r
19 import jetbrains.buildServer.nuget.common.DotNetConstants;\r
20 import jetbrains.buildServer.nuget.common.PackagesConstants;\r
21 import jetbrains.buildServer.requirements.Requirement;\r
22 import jetbrains.buildServer.requirements.RequirementType;\r
23 import jetbrains.buildServer.serverSide.InvalidProperty;\r
24 import jetbrains.buildServer.serverSide.PropertiesProcessor;\r
25 import jetbrains.buildServer.serverSide.RunType;\r
26 import jetbrains.buildServer.util.StringUtil;\r
27 import jetbrains.buildServer.web.openapi.PluginDescriptor;\r
28 import org.jetbrains.annotations.NotNull;\r
29 \r
30 import java.util.*;\r
31 \r
32 import static jetbrains.buildServer.nuget.common.PackagesConstants.NUGET_API_KEY;\r
33 import static jetbrains.buildServer.nuget.common.PackagesConstants.NUGET_PATH;\r
34 import static jetbrains.buildServer.nuget.common.PackagesConstants.NUGET_PUBLISH_FILES;\r
35 \r
36 /**\r
37  * Created by Eugene Petrenko (eugene.petrenko@gmail.com)\r
38  * Date: 21.07.11 14:15\r
39  */\r
40 public class PublishRunType extends RunType {\r
41   private final PluginDescriptor myDescriptor;\r
42 \r
43   public PublishRunType(@NotNull final PluginDescriptor descriptor) {\r
44     myDescriptor = descriptor;\r
45   }\r
46 \r
47   @NotNull\r
48   @Override\r
49   public String getType() {\r
50     return PackagesConstants.PUBLISH_RUN_TYPE;\r
51   }\r
52 \r
53   @Override\r
54   public String getDisplayName() {\r
55     return "NuGet Publish Packages";\r
56   }\r
57 \r
58   @Override\r
59   public String getDescription() {\r
60     return "Pushes and publishes NuGet package to a given feed";\r
61   }\r
62 \r
63   @Override\r
64   public PropertiesProcessor getRunnerPropertiesProcessor() {\r
65     return new PropertiesProcessor() {\r
66       public Collection<InvalidProperty> process(Map<String, String> properties) {\r
67         final List<InvalidProperty> checks = new ArrayList<InvalidProperty>();\r
68 \r
69         if (StringUtil.isEmptyOrSpaces(properties.get(NUGET_PATH))) {\r
70           checks.add(new InvalidProperty(NUGET_PATH, "Path to nuget.exe must be specified"));\r
71         }\r
72 \r
73         if (StringUtil.isEmptyOrSpaces(properties.get(NUGET_API_KEY))) {\r
74           checks.add(new InvalidProperty(NUGET_API_KEY, "API key must be specified"));\r
75         }\r
76 \r
77         if (StringUtil.isEmptyOrSpaces(properties.get(NUGET_PUBLISH_FILES))) {\r
78           checks.add(new InvalidProperty(NUGET_API_KEY, "Specify at least one package to pusblish"));\r
79         }\r
80 \r
81         return checks;\r
82       }\r
83     };\r
84   }\r
85 \r
86   @Override\r
87   public String getEditRunnerParamsJspFilePath() {\r
88     return myDescriptor.getPluginResourcesPath("publish/editPublish.jsp");\r
89   }\r
90 \r
91   @Override\r
92   public String getViewRunnerParamsJspFilePath() {\r
93     return myDescriptor.getPluginResourcesPath("publish/viewPublish.jsp");\r
94   }\r
95 \r
96   @Override\r
97   public Map<String, String> getDefaultRunnerProperties() {\r
98     return Collections.emptyMap();\r
99   }\r
100 \r
101   @Override\r
102   public List<Requirement> getRunnerSpecificRequirements(@NotNull Map<String, String> runParameters) {\r
103     List<Requirement> list = new ArrayList<Requirement>(super.getRunnerSpecificRequirements(runParameters));\r
104     list.add(new Requirement(DotNetConstants.DOT_NET_FRAMEWORK_4_x86, null, RequirementType.EXISTS));\r
105     return list;\r
106   }\r
107 \r
108 }\r