try fixing process checker, again

This commit is contained in:
Adam 2022-04-24 18:54:30 +02:00
parent 12a905e8da
commit 3606e512b0

View file

@ -1,9 +1,11 @@
package dev.adamko.kafkatorio.task
import java.io.ByteArrayOutputStream
import javax.inject.Inject
import org.gradle.api.Task
import org.gradle.api.internal.specs.ExplainingSpec
import org.gradle.api.tasks.Exec
import org.gradle.process.ExecOperations
/** Checks if a process is running. Windows only. */
class ProcessRunningSpec(
@ -11,17 +13,21 @@ class ProcessRunningSpec(
private val ignoreCase: Boolean = true,
) : ExplainingSpec<Task> {
@Inject
fun executor(): ExecOperations {
throw UnsupportedOperationException()
}
override fun isSatisfiedBy(element: Task?): Boolean = whyUnsatisfied(element) == null
override fun whyUnsatisfied(element: Task?): String? = with(element) {
when (this) {
override fun whyUnsatisfied(element: Task?): String? {
return when (element) {
null -> "task is null"
!is Exec -> "task ${this::class.simpleName} is not ${Exec::class.simpleName}"
else -> {
return ByteArrayOutputStream().use { outputStream ->
project.exec {
executor().exec {
commandLine("tasklist") // Windows only for now...
standardOutput = outputStream
}