implement view pack parameters,
[teamcity/dotNetPackagesSupport.git] / nuget-server / src / jetbrains / buildServer / nuget / server / pack / PackRunType.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.pack;\r
18 \r
19 import jetbrains.buildServer.agent.ServerProvidedProperties;\r
20 import jetbrains.buildServer.nuget.common.DotNetConstants;\r
21 import jetbrains.buildServer.nuget.common.PackagesConstants;\r
22 import jetbrains.buildServer.nuget.server.util.BasePropertiesProcessor;\r
23 import jetbrains.buildServer.parameters.ReferencesResolverUtil;\r
24 import jetbrains.buildServer.requirements.Requirement;\r
25 import jetbrains.buildServer.requirements.RequirementType;\r
26 import jetbrains.buildServer.serverSide.InvalidProperty;\r
27 import jetbrains.buildServer.serverSide.PropertiesProcessor;\r
28 import jetbrains.buildServer.serverSide.RunType;\r
29 import jetbrains.buildServer.web.openapi.PluginDescriptor;\r
30 import org.jetbrains.annotations.NotNull;\r
31 \r
32 import java.util.*;\r
33 \r
34 import static jetbrains.buildServer.nuget.common.PackagesConstants.*;\r
35 \r
36 /**\r
37  * @author Eugene Petrenko (eugene.petrenko@gmail.com)\r
38  *         Date: 22.08.11 21:05\r
39  */\r
40 public class PackRunType extends RunType {\r
41   private final PluginDescriptor myDescriptor;\r
42 \r
43   public PackRunType(@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.PACK_RUN_TYPE;\r
51   }\r
52 \r
53   @Override\r
54   public String getDisplayName() {\r
55     return "NuGet Packages Pack";\r
56   }\r
57 \r
58   @Override\r
59   public String getDescription() {\r
60     return "Creates NuGet package from a given spec file";\r
61   }\r
62 \r
63   @NotNull\r
64   @Override\r
65   public String describeParameters(@NotNull Map<String, String> parameters) {\r
66     StringBuilder sb = new StringBuilder();\r
67 \r
68     sb.append("Pack: ").append(parameters.get(PackagesConstants.NUGET_PACK_SPEC_FILE)).append("\n");\r
69     sb.append("Version: ").append(parameters.get(PackagesConstants.NUGET_PACK_VERSION)).append("\n");\r
70     return sb.toString();\r
71   }\r
72 \r
73   @Override\r
74   public PropertiesProcessor getRunnerPropertiesProcessor() {\r
75     return new BasePropertiesProcessor() {\r
76       @Override\r
77       protected void checkProperties(@NotNull Map<String, String> map, @NotNull Collection<InvalidProperty> result) {\r
78         notEmpty(NUGET_PATH, "Path to nuget.exe must be specified", map, result);\r
79         notEmpty(NUGET_PACK_SPEC_FILE, "Package definition file must be specified", map, result);\r
80         notEmpty(NUGET_PACK_OUTPUT_DIR, "Package creation output directory must be specified", map, result);\r
81         final String version = notEmpty(NUGET_PACK_VERSION, "Version must be specified", map, result);\r
82         if (version != null && !ReferencesResolverUtil.containsReference(version) && !version.matches("\\d+(\\.\\d+){0,3}")) {\r
83           result.add(new InvalidProperty(NUGET_PACK_VERSION, "Version must be in assmebly version format: D[.D[.D[.D]]], i.e. 1.2.3 or 5.4.3.2"));\r
84         }\r
85 \r
86         //TODO: check properties are well-formed\r
87       }\r
88     };\r
89   }\r
90 \r
91   @Override\r
92   public String getEditRunnerParamsJspFilePath() {\r
93     return myDescriptor.getPluginResourcesPath("pack/editPack.jsp");\r
94   }\r
95 \r
96   @Override\r
97   public String getViewRunnerParamsJspFilePath() {\r
98     return myDescriptor.getPluginResourcesPath("pack/viewPack.jsp");\r
99   }\r
100 \r
101   @Override\r
102   public Map<String, String> getDefaultRunnerProperties() {\r
103     return new HashMap<String, String>(){{\r
104       put(PackagesConstants.NUGET_PACK_VERSION, "%" + ServerProvidedProperties.BUILD_NUMBER_PROP + "%");\r
105     }};\r
106   }\r
107 \r
108   @Override\r
109   public List<Requirement> getRunnerSpecificRequirements(@NotNull Map<String, String> runParameters) {\r
110     List<Requirement> list = new ArrayList<Requirement>(super.getRunnerSpecificRequirements(runParameters));\r
111     list.add(new Requirement(DotNetConstants.DOT_NET_FRAMEWORK_4_x86, null, RequirementType.EXISTS));\r
112     return list;\r
113   }\r
114 }\r