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.exec;
\r
19 import com.intellij.execution.configurations.GeneralCommandLine;
\r
20 import com.intellij.openapi.diagnostic.Logger;
\r
21 import jetbrains.buildServer.ExecResult;
\r
22 import jetbrains.buildServer.SimpleCommandLineProcessRunner;
\r
23 import jetbrains.buildServer.util.StringUtil;
\r
24 import org.jetbrains.annotations.NotNull;
\r
26 import java.io.File;
\r
27 import java.util.List;
\r
30 * Created by Eugene Petrenko (eugene.petrenko@gmail.com)
\r
31 * Date: 14.07.11 12:48
\r
33 public class NuGetExecutorImpl implements NuGetExecutor {
\r
34 private static final Logger LOG = Logger.getInstance(NuGetExecutorImpl.class.getName());
\r
36 private final NuGetTeamCityProvider myNuGetTeamCityProvider;
\r
38 public NuGetExecutorImpl(@NotNull final NuGetTeamCityProvider nuGetTeamCityProvider) {
\r
39 myNuGetTeamCityProvider = nuGetTeamCityProvider;
\r
43 public <T> T executeNuGet(@NotNull final File nugetExePath,
\r
44 @NotNull final List<String> arguments,
\r
45 @NotNull final NuGetOutputProcessor<T> listener) {
\r
47 GeneralCommandLine cmd = new GeneralCommandLine();
\r
48 cmd.setExePath(myNuGetTeamCityProvider.getNuGetRunnerPath().getPath());
\r
49 cmd.addParameter(nugetExePath.getPath());
\r
50 cmd.addParameters(arguments);
\r
52 if (LOG.isDebugEnabled()) {
\r
53 LOG.debug("Starting: " + cmd.getCommandLineString());
\r
56 final ExecResult result = SimpleCommandLineProcessRunner.runCommand(cmd, new byte[0]);
\r
58 if (LOG.isDebugEnabled()) {
\r
59 LOG.debug("Exited with code: " + result.getExitCode());
\r
60 if (!StringUtil.isEmptyOrSpaces(result.getStdout())) {
\r
61 LOG.debug("Output: " + result.getStdout());
\r
63 if (!StringUtil.isEmptyOrSpaces(result.getStderr())) {
\r
64 LOG.debug("Error: " + result.getStderr());
\r
68 listener.onStdOutput(result.getStdout());
\r
69 listener.onStdError(result.getStderr());
\r
70 listener.onFinished(result.getExitCode());
\r
72 return listener.getResult();
\r