public T executeNuGet()

in nuget-server/src/jetbrains/buildServer/nuget/server/exec/impl/NuGetExecutorImpl.java [55:109]


  public <T> T executeNuGet(@NotNull final File nugetExePath,
                            @NotNull final List<String> arguments,
                            @NotNull final Collection<PackageSource> packageSources,
                            @NotNull final NuGetOutputProcessor<T> listener) throws NuGetExecutionException {
    assertOs();

    GeneralCommandLine cmd = new GeneralCommandLine();
    cmd.setExePath(myNuGetTeamCityProvider.getNuGetRunnerPath().getAbsolutePath());

    if (TeamCityProperties.getBooleanOrTrue(NUGET_SERVER_CLI_FORCE_ASSEMBLY_VALIDATION_PROP)) {
      cmd.addParameter(NUGET_CLI_FORCE_ASSEMBLY_VALIDATION_ARG);
    }

    cmd.addParameter(nugetExePath.getPath());
    cmd.addParameters(arguments);


    File sourcesFile;
    try {
      sourcesFile = TempFilesUtil.createTempFile(myTempFiles.getTempDirectory(), "trigger-sources");
      PackageSourceUtil.writeSources(sourcesFile, packageSources);
    } catch (IOException e) {
      throw new NuGetExecutionException("Failed to create temp file for NuGet sources. " + e.getMessage(), e);
    }

    final Map<String, String> additionalEnvironment = new HashMap<String, String>();
    additionalEnvironment.put(TEAMCITY_NUGET_FEEDS_ENV_VAR, sourcesFile.getAbsolutePath());
    additionalEnvironment.put(NUGET_CREDENTIALPROVIDERS_PATH_ENV_VAR, myNuGetTeamCityProvider.getCredentialProviderHomeDirectory().getAbsolutePath());
    cmd.setEnvParams(additionalEnvironment);
    cmd.setPassParentEnvs(true);

    if (LOG.isDebugEnabled()) {
      LOG.debug("Starting: " + cmd.getCommandLineString());
    }

    final ExecResult result = SimpleCommandLineProcessRunner.runCommand(cmd, new byte[0]);

    if (LOG.isDebugEnabled()) {
      LOG.debug("Exited with code: " + result.getExitCode());
      if (!StringUtil.isEmptyOrSpaces(result.getStdout())) {
        LOG.debug("Output: " + result.getStdout());
      }
      if (!StringUtil.isEmptyOrSpaces(result.getStderr())) {
        LOG.debug("Error: " + result.getStderr());
      }
    }

    FileUtil.delete(sourcesFile);

    listener.onStdOutput(result.getStdout());
    listener.onStdError(result.getStderr());
    listener.onFinished(result.getExitCode());

    return listener.getResult();
  }