Skip to content

Latest commit

 

History

History
90 lines (65 loc) · 2.81 KB

README.md

File metadata and controls

90 lines (65 loc) · 2.81 KB

koproc

jdk11 kotlin gradle GitHub maven central

Small lib to execute process and run commands in Kotlin style.

Based on Java ProcessBuilder API

Get Started

Add dependencies

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")
}

Run process and get the result

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}")
    }
}

Run command and get the result

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")
}

Adjust default timeouts

init {
    ru.iopump.koproc.koprocDefaultStartCommandTimeoutSec = 5L
    ru.iopump.koproc.koprocDefaultStartProcessTimeoutSec = 3600L
}

Examples

There is a sample project link using koproc