apply plugin: 'org.jmailen.kotlinter'

android {
    compileSdkVersion AndroidConfig.compileSdk

    sourceSets {
        main {
            manifest.srcFile "AndroidManifest.xml"
            java.srcDirs = ['src']
            res.srcDirs = ['res']
        }
        release {
            manifest.srcFile "AndroidManifest.xml"
        }
        debug {
            manifest.srcFile "AndroidManifest.xml"
        }
    }

    defaultConfig {
        minSdkVersion AndroidConfig.minSdk
        targetSdkVersion AndroidConfig.targetSdk
        applicationIdSuffix pkgNameSuffix
        versionCode extVersionCode
        versionName project.ext.properties.getOrDefault("libVersion", "1.4") + ".$extVersionCode"
        setProperty("archivesBaseName", "tachiyomi-$pkgNameSuffix-v$versionName")
        def readmes = project.projectDir.listFiles({ File file ->
            file.name == "README.md" || file.name == "CHANGELOG.md"
        } as FileFilter)
        def hasReadme = readmes != null && readmes.any { File file ->
            file.name.startsWith("README")
        }
        def hasChangelog = readmes != null && readmes.any { File file ->
            file.name.startsWith("CHANGELOG")
        }
        manifestPlaceholders = [
                appName : "Tachiyomi: $extName",
                extClass: extClass,
                extFactory: project.ext.properties.getOrDefault("extFactory", ""),
                nsfw: project.ext.properties.getOrDefault("isNsfw", false) ? 1 : 0,
                hasReadme: hasReadme ? 1 : 0,
                hasChangelog: hasChangelog ? 1 : 0,
        ]
    }

    signingConfigs {
        release {
            storeFile rootProject.file("signingkey.jks")
            storePassword System.getenv("KEY_STORE_PASSWORD")
            keyAlias System.getenv("ALIAS")
            keyPassword System.getenv("KEY_PASSWORD")
        }
    }

    buildTypes {
        release {
            signingConfig signingConfigs.release
            minifyEnabled false
        }
    }

    dependenciesInfo {
        includeInApk = false
    }

    buildFeatures {
        // Disable unused AGP features
        aidl false
        renderScript false
        resValues false
        shaders false
    }

    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_1_8
        targetCompatibility = JavaVersion.VERSION_1_8
    }

    kotlinOptions {
        jvmTarget = JavaVersion.VERSION_1_8.toString()
        freeCompilerArgs += "-opt-in=kotlinx.serialization.ExperimentalSerializationApi"
    }

    kotlinter {
        experimentalRules = true
        disabledRules = [
            "experimental:argument-list-wrapping", // Doesn't play well with Android Studio
            "experimental:comment-wrapping",
        ]
    }
}

repositories {
    mavenCentral()
}

dependencies {
    implementation(project(":core"))
    compileOnly(libs.bundles.common)
}

preBuild.dependsOn(lintKotlin)
lintKotlin.dependsOn(formatKotlin)