public BuildProcess createBuildProcess()

in nuget-agent/src/jetbrains/buildServer/nuget/agent/runner/pack/PackRunner.java [46:90]


  public BuildProcess createBuildProcess(@NotNull final AgentRunningBuild runningBuild,
                                         @NotNull final BuildRunnerContext context) throws RunBuildException {
    final CompositeBuildProcess process = new CompositeBuildProcessImpl();
    final NuGetPackParameters params = myParametersFactory.loadPackParameters(context);

    final CompositeBuildProcess packRunners = new CompositeBuildProcessImpl();
    final Set<File> createdPackages = new TreeSet<File>();

    process.pushBuildProcess(new OutputDirectoryCleanerProcess(params, runningBuild, myCleaner));

    final FilesState filesState = createFilesState(params.getOutputDirectory());

    process.pushBuildProcess(
            new MatchFilesBuildProcess(context, params, new MatchFilesBuildProcessBase.Callback() {
              private File updateFile(@NotNull final File file) {
                if (params.preferProjectFileToNuSpec()) {
                  for (String ext : FeedConstants.NUGET_SUPPORTED_PROJECTS) {
                    final File projectFile = new File(file.getParentFile(), FileUtil.getNameWithoutExtension(file) +  ext);
                    if (projectFile.isFile()) {
                      runningBuild.getBuildLogger().message("Detected related project file for .nupkg file: " + projectFile);
                      return projectFile;
                    }
                  }
                }
                return file;
              }

              public void fileFound(@NotNull File file) throws RunBuildException {
                packRunners.pushBuildProcess(myActionFactory.createPack(context, updateFile(file), params));
              }
            })
    );
    //calls NuGet to pack all selected packages
    process.pushBuildProcess(packRunners);
    //collect changed files
    process.pushBuildProcess(collectCreatedFiles(filesState, createdPackages, params.getOutputDirectory()));
    //publish packages data
    process.pushBuildProcess(myActionFactory.createCreatedPackagesReport(context, createdPackages));
    //publish files as artifacts if needed
    if (params.publishAsArtifacts()) {
      process.pushBuildProcess(publishArtifactsProcess(runningBuild, createdPackages));
    }

    return process;
  }