From 2733dc4f624d45d242c926ecedde9d3621d98efa Mon Sep 17 00:00:00 2001 From: Adam <897017+aSemy@users.noreply.github.com> Date: Sat, 13 Aug 2022 11:56:45 +0200 Subject: [PATCH] only run docker task if docker is running --- .../kafkatorio/task/DockerComposeExec.kt | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/buildSrc/src/main/kotlin/dev/adamko/kafkatorio/task/DockerComposeExec.kt b/buildSrc/src/main/kotlin/dev/adamko/kafkatorio/task/DockerComposeExec.kt index e451896..ba5fb76 100644 --- a/buildSrc/src/main/kotlin/dev/adamko/kafkatorio/task/DockerComposeExec.kt +++ b/buildSrc/src/main/kotlin/dev/adamko/kafkatorio/task/DockerComposeExec.kt @@ -8,6 +8,7 @@ import org.gradle.api.file.RegularFileProperty import org.gradle.api.logging.LogLevel import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.Property +import org.gradle.api.provider.ProviderFactory import org.gradle.api.tasks.CacheableTask import org.gradle.api.tasks.Input import org.gradle.api.tasks.InputDirectory @@ -16,15 +17,16 @@ import org.gradle.api.tasks.PathSensitive import org.gradle.api.tasks.PathSensitivity import org.gradle.api.tasks.SkipWhenEmpty import org.gradle.api.tasks.TaskAction +import org.gradle.kotlin.dsl.property import org.gradle.process.ExecOperations -import org.gradle.work.Incremental import org.gradle.work.NormalizeLineEndings import org.jetbrains.kotlin.util.parseSpaceSeparatedArgs @CacheableTask abstract class DockerComposeExec @Inject constructor( private val executor: ExecOperations, - private val objectFactory: ObjectFactory, + private val objects: ObjectFactory, + private val providers: ProviderFactory, ) : DefaultTask() { @get:InputDirectory @@ -36,14 +38,28 @@ abstract class DockerComposeExec @Inject constructor( @get:Input abstract val command: Property + @get:Input + val dockerIsActive: Property = objects.property().convention( + providers.exec { + commandLine = parseSpaceSeparatedArgs("docker info") + isIgnoreExitValue = true + }.result.map { + it.exitValue == 0 + } + ) + @get:OutputFile - val stateFile: RegularFileProperty = objectFactory.fileProperty().convention { + val stateFile: RegularFileProperty = objects.fileProperty().convention { temporaryDir.resolve("docker-files.md5") } init { group = DOCKER_COMPOSE_GROUP logging.captureStandardOutput(LogLevel.LIFECYCLE) + + super.onlyIf { + it is DockerComposeExec && it.dockerIsActive.getOrElse(false) + } } @TaskAction