plugins { alias(libs.plugins.androidApplication) apply false alias(libs.plugins.androidLibrary) apply false alias(libs.plugins.jetbrainsKotlinJvm) apply false alias(libs.plugins.androidBenchmark) apply false alias(libs.plugins.diffplugSpotless) alias(libs.plugins.googleServices) apply false alias(libs.plugins.jetbrainsComposeCompiler) apply false alias(libs.plugins.composeMultiplatform) apply false alias(libs.plugins.kotlinMultiplatform) apply false alias(libs.plugins.androidKotlinMultiplatformLibrary) apply false alias(libs.plugins.serialization) } allprojects { configurations.configureEach { resolutionStrategy.cacheChangingModulesFor 0, 'seconds' } apply plugin: 'com.diffplug.spotless' if (project === rootProject) { spotless { predeclareDeps() } spotlessPredeclare { kotlin { ktlint() } } } else { spotless { kotlin { target 'src/**/*.kt' ktlint() licenseHeaderFile rootProject.file('.spotless/copyright.kt'), "@file:|package|import|class|object|sealed|open|interface|abstract " } groovyGradle { target '*.gradle' } } } } subprojects { afterEvaluate { try { tasks.named("preBuild") { dependsOn("spotlessApply") } } catch (UnknownTaskException ignored) { tasks.matching { it.name.startsWith("pre") && it.name.endsWith("Build") }.configureEach { dependsOn("spotlessApply") } } } } tasks.register('installGitHook', Copy) { def dotGit = new File(rootProject.rootDir, '.git') def hooksDir if (dotGit.isFile()) { // Git worktree: .git is a file with "gitdir: " def gitDir = new File(dotGit.text.trim().replace('gitdir: ', '')) hooksDir = new File(gitDir, 'hooks') } else { hooksDir = new File(dotGit, 'hooks') } from new File(rootProject.rootDir, '.git-hooks/pre-commit') from new File(rootProject.rootDir, '.git-hooks/pre-push') into { hooksDir } filePermissions { unix(0777) } } tasks.getByPath(':amethyst:preBuild').dependsOn installGitHook