buildscript {
    ext {
        kotlin_version = '1.3.20'
        gradle_version = '3.4.1'
    }

    repositories {
        google()
        maven { url 'https://plugins.gradle.org/m2/' }
        jcenter()
    }

    dependencies {
        classpath "com.android.tools.build:gradle:$gradle_version"
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath 'gradle.plugin.org.mozilla.rust-android-gradle:plugin:0.8.1'
    }
}

apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
apply plugin: 'org.mozilla.rust-android-gradle.rust-android'

android {
    compileSdkVersion 27
    buildToolsVersion "28.0.3"

    defaultConfig {
        minSdkVersion 21
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
    }
    lintOptions {
        abortOnError true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    sourceSets {
        main.java.srcDirs += 'src/main/kotlin'
    }
}

cargo {
    profile = 'release'
    module = '../rust'
    libname = 'rust-native-patchql'
    targets = ['arm', 'arm64', 'x86', 'x86_64']
}

repositories {
    google()
    maven {
        // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
        url "$rootDir/../node_modules/react-native/android"
    }
    jcenter()
}

dependencies {
    implementation 'com.facebook.react:react-native:0.59.10'
    implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
}

afterEvaluate {
    // The `cargoBuild` task isn't available until after evaluation.
    android.libraryVariants.all { variant ->
        def productFlavor = ""
        variant.productFlavors.each {
            productFlavor += "${it.name.capitalize()}"
        }
        def buildType = "${variant.buildType.name.capitalize()}"
        tasks["generate${productFlavor}${buildType}Assets"].dependsOn(tasks["cargoBuild"])
    }
}
  
