public ProgramCommandLine makeProgramCommandLine()

in cmake-runner-agent/src/jetbrains/buildServer/cmakerunner/agent/CMakeConfigureBuildService.java [28:105]


  public ProgramCommandLine makeProgramCommandLine() throws RunBuildException {

    final List<String> arguments = new ArrayList<String>();
    final Map<String, String> runnerParameters = getRunnerParameters(); // all server-ui options
    final Map<String, String> environment = new HashMap<String, String>(System.getenv());
    environment.putAll(getBuildParameters().getEnvironmentVariables());

    // Path to 'cmake'
    String programPath = runnerParameters.get(UI_CMAKE_COMMAND);
    if (programPath == null) {
      programPath = DEFAULT_CMAKE_PROGRAM;
    }

    // Check for program exist
//    if (!FileUtil2.checkIfExists(programPath) && FileUtil2.findExecutableByNameInPATH(programPath, environment) == null)
//      throw new RunBuildException("Cannot locate `" + programPath + "' executable");


    // CMake options

    final String generator = runnerParameters.get(UI_MAKEFILE_GENERATOR);

    if (generator != null && !generator.equalsIgnoreCase("Default")) {
      arguments.add(RUNNER_MAKEFILE_GENERATOR);
      arguments.add(generator);
    }

    final Boolean devWarn = Boolean.valueOf(runnerParameters.get(UI_DEVELOPER_WARNINGS));
    arguments.add(devWarn ? RUNNER_DEVELOPER_WARNINGS_ON : RUNNER_DEVELOPER_WARNINGS_OFF);

    if (devWarn) {
      if (Boolean.valueOf(runnerParameters.get(UI_WARN_UNINITIALIZED))) {
        arguments.add(RUNNER_WARN_UNINITIALIZED);
      }
      if (Boolean.valueOf(runnerParameters.get(UI_WARN_UNUSED_VARS))) {
        arguments.add(RUNNER_WARN_UNUSED_VARS);
      }
      if (Boolean.valueOf(runnerParameters.get(UI_NO_WARN_UNUSED_CLI))) {
        arguments.add(RUNNER_NO_WARN_UNUSED_CLI);
      }
      if (Boolean.valueOf(runnerParameters.get(UI_PRINT_TRACE))) {
        arguments.add(RUNNER_PRINT_TRACE);
      }
      if (Boolean.valueOf(runnerParameters.get(UI_DEBUG_MODE))) {
        arguments.add(RUNNER_DEBUG_MODE);
      }
    }

    final String buildTypeName = runnerParameters.get(UI_CMAKE_BUILD_TYPE);
    CMakeBuildType buildType = null;
    for (final CMakeBuildType type : Arrays.asList(CMakeBuildType.values())) {
      if (type.getNormalName().equals(buildTypeName)) {
        buildType = type;
        break;
      }
    }
    if (buildType != null && buildType != CMakeBuildType.Default) {
      arguments.add(getVariableToArgument(RUNNER_CMAKE_BUILD_TYPE, buildType.getNormalName()));
    }

    // Other arguments
    addCustomArguments(arguments, runnerParameters.get(UI_ADDITIONAL_PARAMS));

    // Directory contains CMakeLists.txt
    String sourcePath = runnerParameters.get(UI_SOURCE_PATH);
    if (sourcePath == null) {
      sourcePath = ".";
    }
    arguments.add(sourcePath);

    final boolean redirectStdErr = Boolean.valueOf(runnerParameters.get(UI_REDIRECT_STDERR));
    // Result:
    final SimpleProgramCommandLine pcl = new SimpleProgramCommandLine(environment,
            getWorkingDirectory().getAbsolutePath(),
            programPath,
            arguments);
    return redirectStdErr ? OutputRedirectProcessor.wrap(getBuild(), pcl) : pcl;
  }