import org.jetbrains.kotlin.gradle.tasks.KotlinCompile buildscript { ext { fragment_version = "1.6.2" lifecycle_version = '2.6.2' compose_ui_version = '1.5.4' nav_version = '2.7.6' room_version = "2.4.3" accompanist_version = '0.32.0' coil_version = '2.5.0' vico_version = '1.13.1' media3_version = '1.2.0' core_ktx_version = '1.12.0' material3_version = '1.1.2' } dependencies { classpath 'com.google.gms:google-services:4.4.0' } } plugins { id 'com.android.application' version '8.2.1' apply false id 'com.android.library' version '8.2.1' apply false id 'org.jetbrains.kotlin.android' version '1.9.10' apply false id 'org.jetbrains.kotlin.jvm' version '1.9.10' apply false id 'org.jetbrains.kotlin.plugin.serialization' version '1.9.10' apply false id 'androidx.benchmark' version '1.1.1' apply false id 'com.diffplug.spotless' version '6.22.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.txt'), "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