2 * Copyright 2000-2011 JetBrains s.r.o.
\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
8 * http://www.apache.org/licenses/LICENSE-2.0
\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
17 package jetbrains.buildServer.nuget.server.pack;
\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
34 import static jetbrains.buildServer.nuget.common.PackagesConstants.*;
\r
37 * @author Eugene Petrenko (eugene.petrenko@gmail.com)
\r
38 * Date: 22.08.11 21:05
\r
40 public class PackRunType extends RunType {
\r
41 private final PluginDescriptor myDescriptor;
\r
43 public PackRunType(@NotNull final PluginDescriptor descriptor) {
\r
44 myDescriptor = descriptor;
\r
49 public String getType() {
\r
50 return PackagesConstants.PACK_RUN_TYPE;
\r
54 public String getDisplayName() {
\r
55 return "NuGet Packages Pack";
\r
59 public String getDescription() {
\r
60 return "Creates NuGet package from a given spec file";
\r
65 public String describeParameters(@NotNull Map<String, String> parameters) {
\r
66 StringBuilder sb = new StringBuilder();
\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
74 public PropertiesProcessor getRunnerPropertiesProcessor() {
\r
75 return new BasePropertiesProcessor() {
\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
86 //TODO: check properties are well-formed
\r
92 public String getEditRunnerParamsJspFilePath() {
\r
93 return myDescriptor.getPluginResourcesPath("pack/editPack.jsp");
\r
97 public String getViewRunnerParamsJspFilePath() {
\r
98 return myDescriptor.getPluginResourcesPath("pack/viewPack.jsp");
\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
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