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

buildscript {
    ext {
        fragment_version = "1.6.2"
        lifecycle_version = '2.7.0'
        compose_ui_version = '1.6.1'
        nav_version = '2.7.7'
        room_version = "2.4.3"
        accompanist_version = '0.34.0'
        coil_version = '2.5.0'
        vico_version = '1.14.0'
        media3_version = '1.2.1'
        core_ktx_version = '1.12.0'
        material3_version = '1.2.0'
    }
    dependencies {
        classpath 'com.google.gms:google-services:4.4.0'
    }
}

plugins {
    id 'com.android.application' version '8.2.2' apply false
    id 'com.android.library' version '8.2.2' apply false
    id 'org.jetbrains.kotlin.android' version '1.9.22' apply false
    id 'org.jetbrains.kotlin.jvm' version '1.9.22' apply false
    id 'org.jetbrains.kotlin.plugin.serialization' version '1.9.22' apply false
    id 'androidx.benchmark' version '1.2.3' apply false
    id 'com.diffplug.spotless' version '6.25.0' apply false
}

subprojects {
    tasks.withType(KotlinCompile).configureEach {
        kotlinOptions {
            if (project.findProperty("composeCompilerReports") == "true") {
                freeCompilerArgs += [
                        "-P",
                        "plugin:androidx.compose.compiler.plugins.kotlin:reportsDestination=" +
                                project.buildDir.absolutePath + "/compose_compiler"
                ]
            }
            if (project.findProperty("composeCompilerMetrics") == "true") {
                freeCompilerArgs += [
                        "-P",
                        "plugin:androidx.compose.compiler.plugins.kotlin:metricsDestination=" +
                                project.buildDir.absolutePath + "/compose_compiler"
                ]
            }
        }
    }

    apply plugin: 'com.diffplug.spotless'
    spotless {
        kotlin {
            target '**/*.kt'
            targetExclude("$buildDir/**/*.kt")

            ktlint("1.1.0")
            //ktfmt().googleStyle()
            licenseHeaderFile rootProject.file('spotless/copyright.kt'), "package|import|class|object|sealed|open|interface|abstract "
        }

        groovyGradle {
            target '*.gradle'
        }

        afterEvaluate {
            tasks.named("preBuild") {
                dependsOn("spotlessApply")
            }
        }
    }
}


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') }
    fileMode 0777
}
tasks.getByPath(':app:preBuild').dependsOn installGitHook