fix factorio running check again??

This commit is contained in:
Adam 2022-04-24 21:01:16 +02:00
parent b4ba87e8e0
commit d79a30b1ec
2 changed files with 9 additions and 9 deletions

View file

@ -9,15 +9,11 @@ import org.gradle.process.ExecOperations
/** Checks if a process is running. Windows only. */ /** Checks if a process is running. Windows only. */
class ProcessRunningSpec( class ProcessRunningSpec(
private val executor: ExecOperations,
private val process: String, private val process: String,
private val ignoreCase: Boolean = true, private val ignoreCase: Boolean = true,
) : ExplainingSpec<Task> { ) : ExplainingSpec<Task> {
@Inject
fun executor(): ExecOperations {
throw UnsupportedOperationException()
}
override fun isSatisfiedBy(element: Task?): Boolean = whyUnsatisfied(element) == null override fun isSatisfiedBy(element: Task?): Boolean = whyUnsatisfied(element) == null
override fun whyUnsatisfied(element: Task?): String? { override fun whyUnsatisfied(element: Task?): String? {
@ -27,7 +23,7 @@ class ProcessRunningSpec(
else -> { else -> {
return ByteArrayOutputStream().use { outputStream -> return ByteArrayOutputStream().use { outputStream ->
executor().exec { executor.exec {
commandLine("tasklist") // Windows only for now... commandLine("tasklist") // Windows only for now...
standardOutput = outputStream standardOutput = outputStream
} }

View file

@ -2,6 +2,7 @@ import dev.adamko.kafkatorio.gradle.asConsumer
import dev.adamko.kafkatorio.gradle.factorioModAttributes import dev.adamko.kafkatorio.gradle.factorioModAttributes
import dev.adamko.kafkatorio.gradle.not import dev.adamko.kafkatorio.gradle.not
import dev.adamko.kafkatorio.task.ProcessRunningSpec import dev.adamko.kafkatorio.task.ProcessRunningSpec
import org.gradle.kotlin.dsl.support.serviceOf
import org.jetbrains.kotlin.util.parseSpaceSeparatedArgs import org.jetbrains.kotlin.util.parseSpaceSeparatedArgs
plugins { plugins {
@ -38,13 +39,14 @@ val deployModToClient by tasks.registering(Copy::class) {
//</editor-fold> //</editor-fold>
//<editor-fold desc="Factorio client lifecycle tasks"> //<editor-fold desc="Factorio client lifecycle tasks">
fun isFactorioRunning(): Spec<Task> = ProcessRunningSpec("factorio.exe") fun ExecOperations.isFactorioRunning(): Spec<Task> = ProcessRunningSpec(this, "factorio.exe")
val clientLaunch by tasks.registering(Exec::class) { val clientLaunch by tasks.registering(Exec::class) {
description = "Run Factorio Steam game client" description = "Run Factorio Steam game client"
group = project.name group = project.name
onlyIf(!isFactorioRunning()) onlyIf(!serviceOf<ExecOperations>().isFactorioRunning())
dependsOn(deployModToClient) dependsOn(deployModToClient)
mustRunAfter(clientKill, ":modules:infra-factorio-server:processRun") mustRunAfter(clientKill, ":modules:infra-factorio-server:processRun")
@ -60,7 +62,9 @@ val clientLaunch by tasks.registering(Exec::class) {
val clientKill by tasks.registering(Exec::class) { val clientKill by tasks.registering(Exec::class) {
description = "Run Factorio Steam game client" description = "Run Factorio Steam game client"
group = project.name group = project.name
onlyIf(isFactorioRunning())
onlyIf(serviceOf<ExecOperations>().isFactorioRunning())
commandLine = parseSpaceSeparatedArgs(""" taskkill /im factorio.exe """) commandLine = parseSpaceSeparatedArgs(""" taskkill /im factorio.exe """)
doFirst { logger.lifecycle("Killing factorio.exe") } doFirst { logger.lifecycle("Killing factorio.exe") }
} }