small refactor

This commit is contained in:
2025-12-14 00:07:46 +01:00
parent 9336409590
commit c1cbd96558
4 changed files with 12 additions and 15 deletions

View File

@@ -26,6 +26,10 @@ kotlin {
implementation(libs.node)
}
}
compilerOptions {
freeCompilerArgs.add("-opt-in=kotlinx.cinterop.ExperimentalForeignApi")
}
}
publishing.repositories {

View File

@@ -1,9 +1,9 @@
package com.infendro.shell
import kotlin.coroutines.resume
import kotlin.coroutines.suspendCoroutine
import node.childProcess.ExecOptions
import node.childProcess.exec
import kotlin.coroutines.resume
import kotlin.coroutines.suspendCoroutine
internal actual suspend fun execute(
command: Array<String>,
@@ -13,7 +13,7 @@ internal actual suspend fun execute(
val options = ExecOptions.invoke(cwd = directory)
exec(command, options) { error, stdout, stderr ->
val code = if (error == null) 0 else error.code!!.toInt()
val value = if (error == null) stdout else stderr
val value = (if (error == null) stdout else stderr) as String
continuation.resume(Shell.Result(code, value))
}
}

View File

@@ -6,16 +6,12 @@ internal actual suspend fun execute(
command: Array<String>,
directory: String?,
): Shell.Result {
val process = ProcessBuilder(*command)
.also {
if (directory != null) {
it.directory(File(directory))
}
val process = ProcessBuilder(*command).also {
if (directory != null) {
it.directory(File(directory))
}
.start()
}.start()
val code = process.waitFor()
val value = process
.let { if (code == 0) it.inputReader() else it.errorReader() }
.readText()
val value = (if (code == 0) process.inputReader() else process.errorReader()).readText()
return Shell.Result(code, value)
}

View File

@@ -1,12 +1,10 @@
package com.infendro.shell
import kotlinx.cinterop.CPointer
import kotlinx.cinterop.ExperimentalForeignApi
import kotlinx.cinterop.refTo
import kotlinx.cinterop.toKString
import platform.posix.*
@ExperimentalForeignApi
internal actual suspend fun execute(
command: Array<String>,
directory: String?,
@@ -21,7 +19,6 @@ internal actual suspend fun execute(
return Shell.Result(code, value)
}
@ExperimentalForeignApi
private fun CPointer<FILE>.readLines(): List<String> {
val lines = mutableListOf<String>()
val buffer = ByteArray(4096)