
ru.tinkoff.plugins.buildmetrics.utils.process.ProcessRunner.kt Maven / Gradle / Ivy
package ru.tinkoff.plugins.buildmetrics.utils.process
import java.io.BufferedReader
import java.io.Serializable
fun interface ProcessRunner : Serializable {
fun run(command: String): String
}
class ProcessRunnerImpl : ProcessRunner {
override fun run(command: String): String {
val process = Runtime.getRuntime().exec(command)
check(process.waitFor() == 0) {
val error = process.errorStream.bufferedReader().use(BufferedReader::readText).ifEmpty {
process.inputStream.bufferedReader().use(BufferedReader::readText)
}.trim()
"Command '$command' execution failed with error: exit code = '${process.exitValue()}', error = '$error'."
}
return process.inputStream.bufferedReader().use(BufferedReader::readText)
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy