import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
    alias(libs.plugins.androidApplication) apply false
    alias(libs.plugins.androidLibrary) apply false
    alias(libs.plugins.jetbrainsKotlinAndroid) apply false
    alias(libs.plugins.serialization) apply false
    alias(libs.plugins.kotlin.ksp) version(libs.versions.ksp) apply false
    alias(libs.plugins.gradle.ktlint) version(libs.versions.ktlint) apply false
}

tasks.register('installGitHook', Copy) {
    from new File(rootProject.rootDir, 'git-hooks/pre-commit')
    from new File(rootProject.rootDir, 'git-hooks/pre-push')
    into { new File(rootProject.rootDir, '.git/hooks') }
    filePermissions {
        unix(0b111_111_111)
    }
}

project(":app") {
    tasks.matching { it.name == "preBuild" }.configureEach {
        dependsOn(rootProject.tasks.named("installGitHook"))
    }
}

subprojects {
    tasks.withType(KotlinCompile).configureEach {
        kotlinOptions {
            var buildDirPath = project.layout.buildDirectory.get().asFile.absolutePath
            if (project.findProperty("composeCompilerReports") == "true") {
                freeCompilerArgs += listOf(
                        "-P",
                        "plugin:androidx.compose.compiler.plugins.kotlin:reportsDestination=" +
                                buildDirPath + "/compose_compiler"
                )
            }
            if (project.findProperty("composeCompilerMetrics") == "true") {
                freeCompilerArgs += listOf(
                        "-P",
                        "plugin:androidx.compose.compiler.plugins.kotlin:metricsDestination=" +
                                buildDirPath + "/compose_compiler"
                )
            }
        }
    }
}
