File: build.gradle.kts

package info (click to toggle)
kotlin 1.3.31%2Bds1-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 109,524 kB
  • sloc: java: 454,753; xml: 18,599; javascript: 10,452; sh: 513; python: 97; makefile: 54; ansic: 4
file content (38 lines) | stat: -rw-r--r-- 1,127 bytes parent folder | download | duplicates (2)
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
36
37
38
import org.gradle.api.Project
import java.io.File

apply { plugin("java") }
apply { plugin("jps-compatible") }

sourceSets {
    "main" { projectDefault() }
    "test" {}
}

project.addPrePushHookIfMissing()

fun Project.addPrePushHookIfMissing() {
    val dotGitDirectory = rootProject.getGitDirectory()
    val hooksDirectory = File(dotGitDirectory, "hooks").also { it.mkdirs() }

    val prePushHook = File(projectDir, "pre-push.sh").also { require(it.exists()) }
    val prePushTarget = File(hooksDirectory, "pre-push")
    prePushHook.copyTo(prePushTarget, overwrite = true)
    prePushTarget.setExecutable(true, true)
}

fun Project.getGitDirectory(): File {
    val dotGitFile = File(projectDir, ".git")

    return if (dotGitFile.isFile) {
        val workTreeLink = dotGitFile.readLines().single { it.startsWith("gitdir: ") }
        val mainRepoPath = workTreeLink
            .substringAfter("gitdir: ", "")
            .substringBefore("/.git/worktrees/", "")
            .also { require(it.isNotEmpty()) }

        File(mainRepoPath, ".git").also { require(it.isDirectory) }
    } else {
        dotGitFile
    }
}