buildscript {
    repositories {
        google()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:7.1.2'
    }
}
plugins {
    id 'org.gradle.crypto.checksum' version '1.4.0'
}

import org.gradle.crypto.checksum.Checksum
apply plugin: 'com.android.application'

repositories {
    google()
    mavenCentral()
}


dependencies {
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'org.hamcrest:hamcrest-all:1.3'
}

tasks.register('checkData') {
    doFirst {
        assert file("../espeak-ng-data/en_dict").exists()
        assert file("../espeak-ng-data/intonations").exists()
        assert file("../espeak-ng-data/phondata").exists()
        assert file("../espeak-ng-data/phondata-manifest").exists()
        assert file("../espeak-ng-data/phonindex").exists()
        assert file("../espeak-ng-data/phontab").exists()
    }
}

tasks.register('createDataArchive', Zip) {
    dependsOn tasks.checkData
    preserveFileTimestamps = false
    reproducibleFileOrder = true
    archiveFileName = "espeakdata.zip"
    destinationDirectory = file("res/raw")

    from("../espeak-ng-data/") {
        into "espeak-ng-data"
    }
}

tasks.register('createDataHash', Checksum) {
    dependsOn tasks.createDataArchive
    checksumAlgorithm.set(Checksum.Algorithm.SHA256)
    inputFiles.setFrom(file("./res/raw/espeakdata.zip"))
    outputDirectory.set(layout.buildDirectory.dir('intermediates/datahash'))
}

tasks.register('createDataVersion', Copy) {
    dependsOn tasks.createDataHash
    from layout.buildDirectory.file('intermediates/datahash/espeakdata.zip.sha256')
    rename { return 'espeakdata_version' }
    into file("./res/raw")
}
preBuild.dependsOn createDataVersion


android {
    compileSdkVersion 26

    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 26
        versionCode 22
        versionName "1.52-dev"
    }

    externalNativeBuild {
        ndkBuild {
            path "jni/Android.mk"
        }
    }

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            res.srcDirs = ['res']
        }
        androidTest.setRoot('eSpeakTests')
        androidTest {
            java.srcDirs = ['eSpeakTests/src']
        }
    }

    lintOptions {
        abortOnError false
    }
}