From 9259f31739977a546fa976d48e155818918fa21d Mon Sep 17 00:00:00 2001 From: Kafji Date: Sun, 11 Apr 2021 18:36:54 +0700 Subject: [PATCH] Guard against misconfigured target directory When the Rust project is inside a Cargo Workspace this plugin will _fail_ silently because by default it assumes Cargo target directory will be inside the module directory. This patch add a guard against misconfigured target directory. When the target directory not exists, we'll make the build fails and point user to the documentation. ``` Cargo target directory (`../../target`) does not exists. If you're using a Cargo Workspace, you need to specify the target directory in `build.gradle` or `local.properties` (see https://github.com/mozilla/rust-android-gradle#targetdirectory). ``` --- plugin/src/main/kotlin/com/nishtahir/CargoBuildTask.kt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/plugin/src/main/kotlin/com/nishtahir/CargoBuildTask.kt b/plugin/src/main/kotlin/com/nishtahir/CargoBuildTask.kt index 3add0bd..c3bb9fd 100644 --- a/plugin/src/main/kotlin/com/nishtahir/CargoBuildTask.kt +++ b/plugin/src/main/kotlin/com/nishtahir/CargoBuildTask.kt @@ -9,6 +9,8 @@ import org.gradle.api.logging.LogLevel import org.gradle.api.tasks.TaskAction import java.io.ByteArrayOutputStream import java.io.File +import java.nio.file.Files +import java.nio.file.Paths open class CargoBuildTask : DefaultTask() { var toolchain: Toolchain? = null @@ -42,6 +44,10 @@ open class CargoBuildTask : DefaultTask() { ?: targetDirectory ?: "${module!!}/target" + if (!Files.exists(Paths.get(targetDirectory))) { + throw GradleException("Cargo target directory (`${targetDirectory}`) does not exists. If you're using a Cargo Workspace, you need to specify the target directory in `build.gradle` or `local.properties` (see https://github.com/mozilla/rust-android-gradle#targetdirectory).") + } + val defaultTargetTriple = getDefaultTargetTriple(project, rustcCommand) val cargoOutputDir = if (toolchain.target == defaultTargetTriple) {