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.install;
\r
19 import jetbrains.buildServer.RunBuildException;
\r
20 import jetbrains.buildServer.agent.BuildProcess;
\r
21 import jetbrains.buildServer.agent.BuildProgressLogger;
\r
22 import jetbrains.buildServer.agent.BuildRunnerContext;
\r
23 import jetbrains.buildServer.nuget.agent.parameters.PackagesInstallParameters;
\r
24 import jetbrains.buildServer.nuget.agent.parameters.PackagesUpdateParameters;
\r
25 import jetbrains.buildServer.nuget.agent.util.BuildProcessContinuation;
\r
26 import jetbrains.buildServer.nuget.agent.util.DelegatingBuildProcess;
\r
27 import jetbrains.buildServer.util.FileUtil;
\r
28 import org.jetbrains.annotations.NotNull;
\r
29 import org.jetbrains.annotations.Nullable;
\r
31 import java.io.File;
\r
34 * Created by Eugene Petrenko (eugene.petrenko@gmail.com)
\r
35 * Date: 11.07.11 14:57
\r
37 public class PackagesInstallerBuilder implements LocateNuGetConfigBuildProcess.Callback {
\r
38 private final NuGetActionFactory myActionFactory;
\r
39 private final BuildProcessContinuation myInstall;
\r
40 private final BuildProcessContinuation myUpdate;
\r
41 private final BuildProcessContinuation myPostUpdate;
\r
42 private final BuildRunnerContext myContext;
\r
44 private final PackagesUpdateParameters myUpdateParameters;
\r
45 private final PackagesInstallParameters myInstallParameters;
\r
47 public PackagesInstallerBuilder(@NotNull final NuGetActionFactory actionFactory,
\r
48 @NotNull final BuildProcessContinuation install,
\r
49 @NotNull final BuildProcessContinuation update,
\r
50 @NotNull final BuildProcessContinuation postUpdate,
\r
51 @NotNull final BuildRunnerContext context,
\r
52 @NotNull final PackagesInstallParameters installParameters,
\r
53 @Nullable final PackagesUpdateParameters updateParameters) {
\r
54 myInstall = install;
\r
56 myPostUpdate = postUpdate;
\r
57 myContext = context;
\r
58 myUpdateParameters = updateParameters;
\r
59 myInstallParameters = installParameters;
\r
60 myActionFactory = actionFactory;
\r
63 public final void onPackagesConfigFound(@NotNull final File config, @NotNull final File targetFolder) {
\r
64 myInstall.pushBuildProcess(createInstallAction(config, targetFolder));
\r
66 if (myUpdateParameters == null) return;
\r
67 myUpdate.pushBuildProcess(createUpdateAction(config, targetFolder));
\r
68 myPostUpdate.pushBuildProcess(createInstallAction(config, targetFolder));
\r
71 private DelegatingBuildProcess createUpdateAction(final File config, final File targetFolder) {
\r
72 return new DelegatingBuildProcess(
\r
73 new DelegatingBuildProcess.Action() {
\r
74 private final BuildProgressLogger logger = myContext.getBuild().getBuildLogger();
\r
77 public BuildProcess startImpl() throws RunBuildException {
\r
78 String pathToLog = FileUtil.getRelativePath(myContext.getBuild().getCheckoutDirectory(), config);
\r
79 if (pathToLog == null) pathToLog = config.getPath();
\r
80 logger.activityStarted("update", "Updating NuGet packages for " + pathToLog, "nuget");
\r
82 return myActionFactory.createUpdate(myContext,
\r
89 public void finishedImpl() {
\r
90 logger.activityFinished("update", "nuget");
\r
96 private DelegatingBuildProcess createInstallAction(final File config, final File targetFolder) {
\r
97 return new DelegatingBuildProcess(
\r
98 new DelegatingBuildProcess.Action() {
\r
99 private final BuildProgressLogger logger = myContext.getBuild().getBuildLogger();
\r
102 public BuildProcess startImpl() throws RunBuildException {
\r
103 String pathToLog = FileUtil.getRelativePath(myContext.getBuild().getCheckoutDirectory(), config);
\r
104 if (pathToLog == null) pathToLog = config.getPath();
\r
105 logger.activityStarted("install", "Installing NuGet packages for " + pathToLog, "nuget");
\r
108 return myActionFactory.createInstall(myContext,
\r
109 myInstallParameters,
\r
115 public void finishedImpl() {
\r
116 logger.activityFinished("install", "nuget");
\r