in plugin-rust-agent/src/main/kotlin/jetbrains/buildServer/rust/CargoRunnerBuildService.kt [68:110]
override fun makeProgramCommandLine(): ProgramCommandLine {
val parameters = runnerParameters
val commandName = parameters[CargoConstants.PARAM_COMMAND]
if (StringUtil.isEmpty(commandName)) {
val buildException = RunBuildException("Cargo command name is empty")
buildException.isLogStacktrace = false
throw buildException
}
val argumentsProvider = myArgumentsProviders[commandName]
if (argumentsProvider == null) {
val buildException = RunBuildException("Unable to construct arguments for cargo command $commandName")
buildException.isLogStacktrace = false
throw buildException
}
val arguments = mutableListOf<String>()
val (toolPath, toolArgs) = getToolPath()
arguments += toolArgs
arguments += argumentsProvider.getArguments(runnerContext)
parameters[CargoConstants.PARAM_ADDITIONAL_ARGUMENTS]?.let {
arguments += StringUtil.splitHonorQuotes(it)
}
runnerContext.configParameters[CargoConstants.CARGO_CONFIG_NAME]?.let {
if (Version.valueOf(it) >= myCargoWithStdErrVersion) {
return when (runnerContext.virtualContext.targetOSType) {
OSType.WINDOWS -> {
createProgramCommandline("cmd.exe", listOf("/c", toolPath) + arguments + listOf("2>&1"))
}
else -> {
val scriptlet = "$toolPath ${arguments.joinToString(" ", transform = ::escapeSingleQuotes)} 2>&1"
val toolName = File(toolPath).name
createProgramCommandline("/bin/sh", listOf("-c", scriptlet, toolName))
}
}
}
}
return createProgramCommandline(toolPath, arguments)
}