-
Notifications
You must be signed in to change notification settings - Fork 0
/
githooks.gradle.kts
35 lines (31 loc) · 1.09 KB
/
githooks.gradle.kts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import java.util.Locale
fun isLinuxOrMacOs(): Boolean {
val osName = System.getProperty("os.name").toLowerCase(Locale.ROOT)
return osName.contains("linux") || osName.contains("mac os") || osName.contains("macos")
}
val copyGitHooks by tasks.registering(Copy::class) {
group = "git hooks"
description = "Copies the git hooks from scripts/githooks to the .git folder."
from("$rootDir/scripts/githooks/.") {
include("**/*.sh")
rename("(.*).sh", "$1")
}
into("$rootDir/.git/hooks")
onlyIf { isLinuxOrMacOs() }
}
val installGitHooks by tasks.registering(Exec::class) {
group = "git hooks"
description = "Installs the pre-commit git hooks from scripts/githooks."
workingDir = rootDir
commandLine = listOf("chmod", "-R", "+x", ".git/hooks/.")
dependsOn.add(copyGitHooks)
onlyIf { isLinuxOrMacOs() }
doLast {
logger.info("Git hook installed successfully.")
}
}
afterEvaluate {
// We install the hook at the first occasion
tasks["clean"].dependsOn.add(installGitHooks)
tasks["assemble"].dependsOn.add(installGitHooks)
}