From ffc8f69761cf3944cd2a2d8a199712864cc0d43f Mon Sep 17 00:00:00 2001 From: lucas Date: Wed, 13 Oct 2021 01:07:41 +0800 Subject: [PATCH] Add cargoClean gradle task --- .../kotlin/com/nishtahir/CargoCleanTask.kt | 40 +++++++++++++++++++ .../kotlin/com/nishtahir/RustAndroidPlugin.kt | 6 +++ 2 files changed, 46 insertions(+) create mode 100644 plugin/src/main/kotlin/com/nishtahir/CargoCleanTask.kt diff --git a/plugin/src/main/kotlin/com/nishtahir/CargoCleanTask.kt b/plugin/src/main/kotlin/com/nishtahir/CargoCleanTask.kt new file mode 100644 index 0000000..4d08040 --- /dev/null +++ b/plugin/src/main/kotlin/com/nishtahir/CargoCleanTask.kt @@ -0,0 +1,40 @@ +package com.nishtahir; + +import com.android.build.gradle.* +import org.apache.tools.ant.taskdefs.condition.Os +import org.gradle.api.DefaultTask +import org.gradle.api.GradleException +import org.gradle.api.Project +import org.gradle.api.logging.LogLevel +import org.gradle.api.tasks.Input +import org.gradle.api.tasks.Optional +import org.gradle.api.tasks.TaskAction +import java.io.ByteArrayOutputStream +import java.io.File + +open class CargoCleanTask : DefaultTask() { + + @Suppress("unused") + @TaskAction + fun clean() = with(project) { + extensions[CargoExtension::class].apply { + val theCommandLine = mutableListOf(this.cargoCommand) + theCommandLine.add("clean") + project.exec { spec -> + val cargoExtension = this + with(spec){ + val module = File(cargoExtension.module!!) + if (module.isAbsolute) { + workingDir = module + } else { + workingDir = File(project.project.projectDir, module.path) + } + + workingDir = workingDir.canonicalFile + standardOutput = System.out + commandLine = theCommandLine + } + } + } + } +} \ No newline at end of file diff --git a/plugin/src/main/kotlin/com/nishtahir/RustAndroidPlugin.kt b/plugin/src/main/kotlin/com/nishtahir/RustAndroidPlugin.kt index d7476cc..9bef973 100644 --- a/plugin/src/main/kotlin/com/nishtahir/RustAndroidPlugin.kt +++ b/plugin/src/main/kotlin/com/nishtahir/RustAndroidPlugin.kt @@ -291,5 +291,11 @@ open class RustAndroidPlugin : Plugin { targetBuildTask.dependsOn(generateLinkerWrapper) buildTask.dependsOn(targetBuildTask) } + + val cleanTask = tasks.maybeCreate("cargoClean", + CargoCleanTask::class.java).apply { + group = RUST_TASK_GROUP + description = "Deletes the target directory." + } } }