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.agent.parameters.impl;
\r
19 import jetbrains.buildServer.RunBuildException;
\r
20 import jetbrains.buildServer.agent.BuildRunnerContext;
\r
21 import jetbrains.buildServer.agent.BundledTool;
\r
22 import jetbrains.buildServer.agent.BundledToolsRegistry;
\r
23 import jetbrains.buildServer.nuget.agent.parameters.*;
\r
24 import jetbrains.buildServer.nuget.common.PackagesUpdateMode;
\r
25 import jetbrains.buildServer.util.FileUtil;
\r
26 import jetbrains.buildServer.util.StringUtil;
\r
27 import org.jetbrains.annotations.NotNull;
\r
29 import java.io.File;
\r
30 import java.util.ArrayList;
\r
31 import java.util.Collection;
\r
32 import java.util.Collections;
\r
33 import java.util.List;
\r
35 import static jetbrains.buildServer.nuget.common.PackagesConstants.*;
\r
38 * Created by Eugene Petrenko (eugene.petrenko@gmail.com)
\r
39 * Date: 07.07.11 18:09
\r
41 public class PackagesParametersFactoryImpl implements PackagesParametersFactory {
\r
42 private final BundledToolsRegistry myBundledTools;
\r
44 public PackagesParametersFactoryImpl(@NotNull final BundledToolsRegistry bundledTools) {
\r
45 myBundledTools = bundledTools;
\r
49 public NuGetFetchParameters loadNuGetFetchParameters(@NotNull final BuildRunnerContext context) throws RunBuildException {
\r
50 return new NuGetFetchParameters() {
\r
52 public File getSolutionFile() throws RunBuildException {
\r
53 return getFile(context, SLN_PATH, "Visual Studio .sln file");
\r
57 public File getNuGetExeFile() throws RunBuildException {
\r
58 return getPathToNuGet(context);
\r
62 public Collection<String> getNuGetPackageSources() {
\r
63 return getMultilineParameter(context, NUGET_SOURCES);
\r
66 public boolean getExcludeVersion() {
\r
67 return getBoolean(context, NUGET_EXCLUDE_VERSION);
\r
72 private File getPathToNuGet(BuildRunnerContext context) throws RunBuildException {
\r
73 String path = getParameter(context, NUGET_PATH);
\r
74 if (StringUtil.isEmptyOrSpaces(path))
\r
75 throw new RunBuildException("Runner parameter '" + NUGET_PATH + "' was not found");
\r
77 if (path.startsWith("?")) {
\r
78 final BundledTool tool = myBundledTools.findTool(path.substring(1));
\r
80 path = new File(tool.getRootPath(), NUGET_TOOL_REL_PATH).getPath();
\r
84 File file = FileUtil.resolvePath(context.getBuild().getCheckoutDirectory(), path);
\r
85 if (!file.exists()) {
\r
86 throw new RunBuildException("Failed to find " + "nuget.exe" + " at " + file);
\r
93 private File getFile(@NotNull final BuildRunnerContext context,
\r
94 @NotNull final String runnerParameter,
\r
95 @NotNull final String fileName) throws RunBuildException {
\r
96 String path = getParameter(context, runnerParameter);
\r
97 if (StringUtil.isEmptyOrSpaces(path))
\r
98 throw new RunBuildException("Runner parameter '" + runnerParameter + "' was not found");
\r
100 File file = FileUtil.resolvePath(context.getBuild().getCheckoutDirectory(), path);
\r
101 if (!file.exists()) {
\r
102 throw new RunBuildException("Failed to find " + fileName + " at " + file);
\r
109 private Collection<String> getMultilineParameter(BuildRunnerContext context, String nugetSources) {
\r
110 String sources = getParameter(context, nugetSources);
\r
111 if (sources == null) return Collections.emptyList();
\r
113 List<String> list = new ArrayList<String>();
\r
114 for (String _source : sources.split("[\\r\\n]+")) {
\r
115 final String source = _source.trim();
\r
116 if (!source.isEmpty()) {
\r
121 return Collections.unmodifiableList(list);
\r
124 private boolean getBoolean(@NotNull BuildRunnerContext context, @NotNull String key) {
\r
125 return !StringUtil.isEmptyOrSpaces(getParameter(context, key));
\r
128 private String getParameter(@NotNull BuildRunnerContext context, @NotNull String key) {
\r
129 return context.getRunnerParameters().get(key);
\r
133 public PackagesInstallParameters loadInstallPackagesParameters(@NotNull final BuildRunnerContext context,
\r
134 @NotNull final NuGetFetchParameters nuget) throws RunBuildException {
\r
135 return new PackagesInstallParameters() {
\r
137 public NuGetFetchParameters getNuGetParameters() {
\r
141 public boolean getExcludeVersion() {
\r
142 return getBoolean(context, NUGET_EXCLUDE_VERSION);
\r
147 public PackagesUpdateParameters loadUpdatePackagesParameters(@NotNull final BuildRunnerContext context,
\r
148 @NotNull final NuGetFetchParameters nuget) throws RunBuildException {
\r
149 if (!getBoolean(context, NUGET_UPDATE_PACKAGES)) return null;
\r
151 return new PackagesUpdateParameters() {
\r
153 public NuGetFetchParameters getNuGetParameters() {
\r
158 public PackagesUpdateMode getUpdateMode() {
\r
159 PackagesUpdateMode mode = PackagesUpdateMode.parse(getParameter(context, NUGET_UPDATE_MODE));
\r
160 return mode == null ? PackagesUpdateMode.FOR_SLN : mode;
\r
163 public boolean getUseSafeUpdate() {
\r
164 return getBoolean(context, NUGET_UPDATE_PACKAGES_SAFE);
\r
168 public Collection<String> getPackagesToUpdate() {
\r
169 return getMultilineParameter(context, NUGET_UPDATE_PACKAGE_IDS);
\r
175 public NuGetPublishParameters loadPublishParameters(@NotNull final BuildRunnerContext context) throws RunBuildException {
\r
176 return new NuGetPublishParameters() {
\r
177 public String getPublishSource() throws RunBuildException {
\r
178 return getParameter(context, NUGET_PUBLISH_SOURCE);
\r
182 public String getApiKey() throws RunBuildException {
\r
183 return getParameter(context, NUGET_API_KEY);
\r
187 public Collection<String> getFiles() throws RunBuildException {
\r
188 return getMultilineParameter(context, NUGET_PUBLISH_FILES);
\r
191 public boolean getCreateOnly() {
\r
192 return getBoolean(context, NUGET_PUBLISH_CREATE_ONLY);
\r
196 public File getNuGetExeFile() throws RunBuildException {
\r
197 return getPathToNuGet(context);
\r