plugins {
    id 'java'
}

group = 'dev.maelstrom'
version = '0.3-SNAPSHOT'

repositories {
    mavenCentral()
}

dependencies {
    testImplementation platform('org.junit:junit-bom:5.10.0')
    testImplementation 'org.junit.jupiter:junit-jupiter'
}

test {
    useJUnitPlatform()
}

tasks.register('extractApk', JavaExec) {
    onlyIf {
        !file('build/extracted').exists()
    }

    classpath = files('tools/apktool_2.9.3.jar')

    args = ['d', 'source-apk/tumblr.apk', '-o', 'build/extracted']
}

tasks.register('mergeSmali') {
    dependsOn tasks.extractApk
    doLast {
        copy {
            into 'build/smali-merged'
            from('src/main/smali')
            from('build/extracted') {
                include 'smali_classes*/**', 'smali/**'
            }

            duplicatesStrategy 'exclude'
        }
    }
}

tasks.register('smali') {
    dependsOn tasks.mergeSmali
    doLast {
        mkdir('build/dex')
        javaexec {
            classpath = fileTree('tools/d2j').filter { it.name.endsWith('.jar') }
            println(classpath.files)

            mainClass = 'com.googlecode.d2j.smali.SmaliCmd'

            args = ['-o', 'build/dex/classes.dex', 'build/smali-merged/smali']
        }
    }
}

// NOTE: Maybe broken if gradle thinks the extracted files are newer?
tasks.register('mergeResources') {
    dependsOn tasks.extractApk
    dependsOn tasks.smali
    doLast {
//        copy { // Copy from extracted
//            from 'build/extracted'
//            into 'build/merged'
//            //exclude 'smali_classes*', 'smali'
//        }
//        copy { // Copy resources from src
//            from 'src/main/resources'
//            into 'build/merged'
//        }
//        copy { // Copy smali from src
//            from 'src/main/smali'
//            into 'build/merged'
//        }
        copy {
            into('build/merged')

            from('build/extracted') {
                exclude 'smali_classes*', 'smali'
            }
            from('build/dex')
            from('src/main/resources')

            duplicatesStrategy 'include'
        }
    }
}

tasks.register('buildApk', JavaExec) {
    dependsOn mergeResources

    classpath = files('tools/apktool_2.9.3.jar')

    args = ['b', 'build/merged', '-o', 'build/merged-apktool/tumblr-ykit.apk']
}