public Iterable build()

in dotTrace-agent/src/main/java/jetbrains/buildServer/dotTrace/agent/DotTraceSetupBuilder.java [55:86]


  public Iterable<CommandLineSetup> build(@NotNull final CommandLineSetup baseSetup) {
    if(myAssertions.contains(RunnerAssertions.Assertion.PROFILING_IS_NOT_ALLOWED)) {
      return Collections.singleton(baseSetup);
    }

    final String dotTraceTool = myParametersService.tryGetRunnerParameter(Constants.USE_VAR);
    if (StringUtil.isEmptyOrSpaces(dotTraceTool) || !Boolean.parseBoolean(dotTraceTool)) {
      return Collections.singleton(baseSetup);
    }

    final List<CommandLineResource> resources = new ArrayList<CommandLineResource>(baseSetup.getResources());
    final File cmdFile = myFileService.getTempFileName(DOT_TRACE_CMD_EXT);
    final File projectFile = myFileService.getTempFileName(DOT_TRACE_PROJECT_EXT);
    final File snapshotFileDir = myFileService.getTempFileName("");
    if(!myFileService.exists(snapshotFileDir)) {
      // TODO: use FileService.createDirectories(path) instead
      snapshotFileDir.mkdirs();
    }

    final File snapshotFile = new File(snapshotFileDir, DOT_TRACE_SNAPSHOT_FILE);
    final File patternsFile = myFileService.getTempFileName(DOT_TRACE_PATTERNS_EXT);
    final File reportFile = myFileService.getTempFileName(DOT_TRACE_REPORT_EXT);
    final Context ctx = new Context(baseSetup, projectFile, snapshotFile, patternsFile, reportFile);

    resources.add(new CommandLineFile(myBeforeBuildPublisher, projectFile, myProjectGenerator.create(ctx)));
    resources.add(new CommandLineFile(myBeforeBuildPublisher, patternsFile, myPatternGenerator.create(ctx)));
    resources.add(new CommandLineFile(myBeforeBuildPublisher, cmdFile, myCmdGenerator.create(ctx)));
    resources.add(new CommandLineArtifact(myDotTraceBuildPublisher, reportFile));
    resources.add(new CommandLineArtifact(myDotTraceSnapshotsPublisher, snapshotFile));

    return Collections.singleton(new CommandLineSetup(cmdFile.getPath(), Collections.<CommandLineArgument>emptyList(), resources));
  }