Small lib to execute process and run commands in Kotlin
style.
Based on Java ProcessBuilder API
Gradle Groovy Dsl:
dependencies {
/** KoProc */
implementation "ru.iopump.koproc:koproc:1.1.1"
}
Gradle Kotlin Dsl:
dependencies {
/** KoProc */
implementation("ru.iopump.koproc:koproc:1.1.1")
}
Start process with long duration, do something with Process Java API via KoprocCall
and get the result as KoprocResult
import ru.iopump.koproc.startProcess
fun run() {
val koprocCall: KoprocCall = "java -jar koproc-sample.jar".startProcess()
// Get available 'out' and 'err' and close
koprocCall.use { koprocCall: KoprocCall ->
val out: String = koprocCall.readAvailableOut
val err: String = koprocCall.readAvailableErrOut
}
// Get immutable object with results
val koprocResult: KoprocResult = koprocCall.result
// Throw exception on exit code != 0 or any Throwable during execution.
koprocResult.throwOnAnyFailure().also { koprocResult ->
println("There are no exception thrown. The result is ${koprocResult.out}")
}
}
Execute short command and wait the result as KoprocResult
import ru.iopump.koproc.startCommand
fun run() {
// Adjust KoprocConfig in startCommand function argument
val koprocResult: KoprocResult = "java -jar koproc-sample.jar".startCommand { timeoutSec = 5 }
if (koprocResult.hasSuccessCode) println("Exit code == 0")
if (koprocResult.hasNotError) println("No Throwable during execution")
if (koprocResult.isSuccess) println("Exit code == 0 and no Throwable during execution")
}
init {
ru.iopump.koproc.koprocDefaultStartCommandTimeoutSec = 5L
ru.iopump.koproc.koprocDefaultStartProcessTimeoutSec = 3600L
}
There is a sample project link using koproc