Skip to content
This repository was archived by the owner on Oct 15, 2024. It is now read-only.

Commit 48ae52f

Browse files
committed
refactor(build-logic): make GitHooksTask more lazy
1 parent fe666e9 commit 48ae52f

File tree

3 files changed

+18
-10
lines changed

3 files changed

+18
-10
lines changed

build-logic/automation-plugins/src/main/kotlin/app/passwordstore/gradle/GitHooksPlugin.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ class GitHooksPlugin : Plugin<Project> {
1111
override fun apply(project: Project) {
1212
project.tasks.register<GitHooks>("installGitHooks") {
1313
val projectDirectory = project.layout.projectDirectory
14-
hookScript.set(projectDirectory.file("scripts/pre-push-hook.sh").asFile.readText())
15-
hookOutput.set(projectDirectory.file(".git/hooks/pre-push").asFile)
14+
hookSource.set(projectDirectory.file("scripts/pre-push-hook.sh"))
15+
hookOutput.set(projectDirectory.file(".git/hooks/pre-push"))
1616
}
1717
}
1818
}

build-logic/automation-plugins/src/main/kotlin/app/passwordstore/gradle/tasks/GitHooks.kt

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55

66
package app.passwordstore.gradle.tasks
77

8-
import java.io.File
98
import java.nio.file.Files
9+
import java.nio.file.StandardCopyOption
1010
import java.nio.file.attribute.PosixFilePermission.GROUP_EXECUTE
1111
import java.nio.file.attribute.PosixFilePermission.GROUP_READ
1212
import java.nio.file.attribute.PosixFilePermission.OTHERS_EXECUTE
@@ -15,23 +15,31 @@ import java.nio.file.attribute.PosixFilePermission.OWNER_EXECUTE
1515
import java.nio.file.attribute.PosixFilePermission.OWNER_READ
1616
import java.nio.file.attribute.PosixFilePermission.OWNER_WRITE
1717
import org.gradle.api.DefaultTask
18-
import org.gradle.api.provider.Property
18+
import org.gradle.api.file.RegularFileProperty
1919
import org.gradle.api.tasks.CacheableTask
20-
import org.gradle.api.tasks.Input
20+
import org.gradle.api.tasks.InputFile
2121
import org.gradle.api.tasks.OutputFile
22+
import org.gradle.api.tasks.PathSensitive
23+
import org.gradle.api.tasks.PathSensitivity
2224
import org.gradle.api.tasks.TaskAction
2325

2426
@CacheableTask
2527
abstract class GitHooks : DefaultTask() {
26-
@get:Input abstract val hookScript: Property<String>
28+
@get:InputFile
29+
@get:PathSensitive(PathSensitivity.RELATIVE)
30+
abstract val hookSource: RegularFileProperty
2731

28-
@get:OutputFile abstract val hookOutput: Property<File>
32+
@get:OutputFile abstract val hookOutput: RegularFileProperty
2933

3034
@TaskAction
3135
fun install() {
32-
hookOutput.get().writeText(hookScript.get())
36+
Files.copy(
37+
hookSource.asFile.get().toPath(),
38+
hookOutput.asFile.get().toPath(),
39+
StandardCopyOption.REPLACE_EXISTING,
40+
)
3341
Files.setPosixFilePermissions(
34-
hookOutput.get().toPath(),
42+
hookOutput.asFile.get().toPath(),
3543
setOf(
3644
OWNER_READ,
3745
OWNER_WRITE,

scripts/pre-push-hook.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ set -e
44
set -u
55
set -o pipefail
66

7-
ZERO=$(git hash-object --stdin </dev/null | tr '[0-9a-f]' '0')
7+
ZERO="0000000000000000000000000000000000000000"
88
GRADLE_EXEC="${GRADLE_EXEC:-./gradlew}"
99

1010
while read local_ref local_oid remote_ref remote_oid; do

0 commit comments

Comments
 (0)