import dev.adamko.kafkatorio.gradle.asConsumer import dev.adamko.kafkatorio.gradle.factorioModAttributes import org.jetbrains.kotlin.util.parseSpaceSeparatedArgs plugins { id("dev.adamko.kafkatorio.process-runner") } val tokens: Map by project.extra val modInfraDir: Directory = layout.projectDirectory.dir("infra") val factorioServerDataDir: Directory = modInfraDir.dir("factorio-server") val factorioMod: Configuration by configurations.creating { asConsumer() factorioModAttributes(objects) } dependencies { factorioMod(projects.modules.eventsMod) } val deployModToServer by tasks.registering(Copy::class) { description = "Copy the mod to the Factorio Docker server" group = project.name from(factorioMod) into(factorioServerDataDir.dir("mods")) doLast { logger.lifecycle("Copying mods ${source.files} to $destinationDir") } } // val factorioServerStop = tasks.register("factorioServerStop") { group = project.name mustRunAfter(deployModToServer) workingDir(modInfraDir) commandLine = parseSpaceSeparatedArgs("docker-compose stop factorio-server") } val factorioServerUp = tasks.register("factorioServerUp") { group = project.name mustRunAfter(deployModToServer) dependsOn(factorioServerStop) workingDir(modInfraDir) commandLine = parseSpaceSeparatedArgs("docker-compose up -d factorio-server") } val factorioServerRestart: Task by tasks.creating { group = project.name dependsOn(factorioServerStop, factorioServerUp) } // tasks.build { dependsOn(deployModToServer) } tasks.processRun { description = "Build the mod, upload to Server and Client, and start both" dependsOn( deployModToServer, factorioServerRestart, ) } tasks.processKill { dependsOn( factorioServerStop, ) }