https://github.com/kochetkov-ma/koproc
Run process and execute commands in Kotlin [koproc] [java processbuilder] [kotlin processbuilder]
https://github.com/kochetkov-ma/koproc
cmd execute koproc kotlin pid process processbuilder
Last synced: 8 months ago
JSON representation
Run process and execute commands in Kotlin [koproc] [java processbuilder] [kotlin processbuilder]
- Host: GitHub
- URL: https://github.com/kochetkov-ma/koproc
- Owner: kochetkov-ma
- License: apache-2.0
- Created: 2020-11-22T13:40:45.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2020-11-26T13:42:04.000Z (over 5 years ago)
- Last Synced: 2025-04-02T00:22:53.830Z (about 1 year ago)
- Topics: cmd, execute, koproc, kotlin, pid, process, processbuilder
- Language: Kotlin
- Homepage:
- Size: 42 KB
- Stars: 6
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
koproc
=============================
[](https://www.oracle.com/java/technologies/javase-jdk11-downloads.html)
[](https://github.com/JetBrains/kotlin)
[](https://gradle.org/)

[](http://search.maven.org/#search|ga|1|koproc)
Small lib to execute process and run commands in `Kotlin` style.
Based on `Java ProcessBuilder API`
## Get Started
### Add dependencies
Gradle Groovy Dsl:
```groovy
dependencies {
/** KoProc */
implementation "ru.iopump.koproc:koproc:1.1.1"
}
```
Gradle Kotlin Dsl:
```kotlin
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`
```kotlin
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`
```kotlin
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
```kotlin
init {
ru.iopump.koproc.koprocDefaultStartCommandTimeoutSec = 5L
ru.iopump.koproc.koprocDefaultStartProcessTimeoutSec = 3600L
}
```
## Examples
There is a [sample project link](https://github.com/kochetkov-ma/pump-samples/tree/master/koproc-sample) using koproc