All Downloads are FREE. Search and download functionalities are using the official Maven repository.

ru.tinkoff.plugins.buildmetrics.utils.process.ProcessRunner.kt Maven / Gradle / Ivy

The newest version!
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