Files
kmp-template/checks.gradle.kts
2025-09-17 14:25:27 -03:00

44 lines
1.5 KiB
Kotlin

tasks.register("ensureChecksPreCommitHook") {
group = "verification"
description = "Ensures that the Git pre-commit hook for ktlint is properly set up"
doLast {
val gitHooksDir = rootProject.file(".git/hooks")
val preCommitHookFile = gitHooksDir.resolve("pre-commit")
val requiredHookContent =
"""
#!/bin/sh
# https://github.com/pinterest/ktlint pre-commit hook
ktlint
""".trimIndent()
if (!gitHooksDir.exists()) {
logger.warn("Git hooks directory not found. Is this a Git repository?")
return@doLast
}
if (!preCommitHookFile.exists()) {
logger.lifecycle("Creating ktlint pre-commit hook")
preCommitHookFile.writeText(requiredHookContent)
preCommitHookFile.setExecutable(true)
} else {
val currentContent = preCommitHookFile.readText()
if (!currentContent.contains(requiredHookContent)) {
logger.lifecycle("Updating pre-commit hook with ktlint check")
preCommitHookFile.writeText(requiredHookContent)
preCommitHookFile.setExecutable(true)
} else {
logger.lifecycle("ktlint pre-commit hook is already properly configured")
}
}
}
}
gradle.projectsEvaluated {
tasks.matching { it.name != "ensureChecksPreCommitHook" }.configureEach {
dependsOn("ensureChecksPreCommitHook")
}
}