diff --git a/sekret-gradle-plugin/src/main/java/dev/datlag/sekret/gradle/SekretPlugin.kt b/sekret-gradle-plugin/src/main/java/dev/datlag/sekret/gradle/SekretPlugin.kt index 7079162..41781b6 100644 --- a/sekret-gradle-plugin/src/main/java/dev/datlag/sekret/gradle/SekretPlugin.kt +++ b/sekret-gradle-plugin/src/main/java/dev/datlag/sekret/gradle/SekretPlugin.kt @@ -2,10 +2,7 @@ package dev.datlag.sekret.gradle import dev.datlag.sekret.gradle.common.createSekretExtension import dev.datlag.sekret.gradle.common.kotlinProjectExtension -import dev.datlag.sekret.gradle.tasks.CopySekretNativeBinaryTask -import dev.datlag.sekret.gradle.tasks.CreateAndCopySekretNativeBinaryTask -import dev.datlag.sekret.gradle.tasks.GenerateSekretBuildScriptTask -import dev.datlag.sekret.gradle.tasks.GenerateSekretTask +import dev.datlag.sekret.gradle.tasks.* import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.kotlin.dsl.dependencies @@ -22,6 +19,9 @@ open class SekretPlugin : Plugin { project.tasks.maybeCreate(GenerateSekretBuildScriptTask.NAME, GenerateSekretBuildScriptTask::class) project.tasks.maybeCreate(GenerateSekretTask.NAME, GenerateSekretTask::class) project.tasks.maybeCreate(CopySekretNativeBinaryTask.NAME, CopySekretNativeBinaryTask::class) + project.tasks.maybeCreate(CreateSekretNativeBinaryTask.NAME, CreateSekretNativeBinaryTask::class).also { + it.setupDependingTasks() + } project.tasks.maybeCreate(CreateAndCopySekretNativeBinaryTask.NAME, CreateAndCopySekretNativeBinaryTask::class).also { it.setupDependingTasks() } diff --git a/sekret-gradle-plugin/src/main/java/dev/datlag/sekret/gradle/tasks/CreateSekretNativeBinaryTask.kt b/sekret-gradle-plugin/src/main/java/dev/datlag/sekret/gradle/tasks/CreateSekretNativeBinaryTask.kt new file mode 100644 index 0000000..9bf09d2 --- /dev/null +++ b/sekret-gradle-plugin/src/main/java/dev/datlag/sekret/gradle/tasks/CreateSekretNativeBinaryTask.kt @@ -0,0 +1,35 @@ +package dev.datlag.sekret.gradle.tasks + +import dev.datlag.sekret.gradle.common.findMatchingTask +import dev.datlag.sekret.gradle.common.findMatchingTaskWithType +import org.gradle.api.DefaultTask +import org.gradle.api.Project + +open class CreateSekretNativeBinaryTask : DefaultTask() { + + init { + group = "sekret" + } + + private val sekretProject: Project? + get() = runCatching { + project.findProject("sekret") + }.getOrNull() + + fun setupDependingTasks() { + val assembleTask = sekretProject?.findMatchingTask("assemble") + val generateTask = project.findMatchingTaskWithType(GenerateSekretTask.NAME) + + if (assembleTask != null && generateTask != null) { + dependsOn(generateTask, assembleTask) + } else if (assembleTask != null) { + dependsOn(assembleTask) + } else if (generateTask != null) { + dependsOn(generateTask) + } + } + + companion object { + internal const val NAME = "createSekretNativeBinary" + } +} \ No newline at end of file