tidy up dockerActive property & check

This commit is contained in:
Adam 2022-10-04 22:32:05 +02:00
parent 562296aa96
commit 002aa9b5fb
3 changed files with 28 additions and 9 deletions

View file

@ -2,9 +2,11 @@ package dev.adamko.geedeecee
import javax.inject.Inject
import org.gradle.api.DefaultTask
import org.gradle.api.Task
import org.gradle.api.file.DirectoryProperty
import org.gradle.api.logging.LogLevel
import org.gradle.api.provider.ListProperty
import org.gradle.api.provider.Property
import org.gradle.api.tasks.Input
import org.gradle.api.tasks.InputDirectory
import org.gradle.api.tasks.TaskAction
@ -15,19 +17,26 @@ abstract class GDCCommandTask @Inject constructor(
private val executor: ExecOperations
) : DefaultTask() {
init {
super.setGroup(GDCPlugin.GCD_TASK_GROUP)
description = "Run a docker-compose command."
logging.captureStandardOutput(LogLevel.LIFECYCLE)
}
@get:InputDirectory
abstract val workingDir: DirectoryProperty
@get:Input
abstract val separatedArgs: ListProperty<String>
@get:Input
abstract val dockerActive: Property<Boolean>
init {
super.setGroup(GDCPlugin.GCD_TASK_GROUP)
description = "Run a docker-compose command."
enabledIf {
it.dockerActive.orNull == true
}
logging.captureStandardOutput(LogLevel.LIFECYCLE)
}
@TaskAction
fun dockerCompose() {
val separatedArgs: List<String> = separatedArgs.get()
@ -45,4 +54,13 @@ abstract class GDCCommandTask @Inject constructor(
parseSpaceSeparatedArgs("docker-compose $args")
)
}
companion object {
private inline fun <reified T: Task> T.enabledIf(crossinline spec: (T) -> Boolean) {
onlyIf {
require(it is T)
spec(it)
}
}
}
}

View file

@ -60,6 +60,7 @@ abstract class GDCPlugin @Inject constructor(
target.tasks.withType<GDCCommandTask>().configureEach {
workingDir.convention(gdcSettings.srcDir)
dependsOn(dockerComposeEnvUpdate)
dockerActive.set(gdcSettings.dockerActive)
}
val assembleTasks = target.tasks.matching { LifecycleBasePlugin.ASSEMBLE_TASK_NAME == it.name }
@ -89,7 +90,7 @@ abstract class GDCPlugin @Inject constructor(
dotEnv.put("KAFKATORIO_VERSION", composeProjectVersion)
dotEnv.put("REGISTRY_HOST", containerRegistryHost)
enabled.convention(isDockerActive())
dockerActive.convention(isDockerActive())
}

View file

@ -24,7 +24,7 @@ interface GDCSettings {
val dotEnv: MapProperty<String, String>
@get:Input
val enabled: Property<Boolean>
val dockerActive: Property<Boolean>
// @Suppress("PropertyName", "FunctionName")
// abstract class DotEnv(