refactor(build-logic): make GitHooksTask more lazy

This commit is contained in:
Harsh Shandilya 2022-10-07 18:06:22 +05:30
parent fe666e9ecb
commit 48ae52f9cf
No known key found for this signature in database
3 changed files with 18 additions and 10 deletions

View file

@ -11,8 +11,8 @@ class GitHooksPlugin : Plugin<Project> {
override fun apply(project: Project) { override fun apply(project: Project) {
project.tasks.register<GitHooks>("installGitHooks") { project.tasks.register<GitHooks>("installGitHooks") {
val projectDirectory = project.layout.projectDirectory val projectDirectory = project.layout.projectDirectory
hookScript.set(projectDirectory.file("scripts/pre-push-hook.sh").asFile.readText()) hookSource.set(projectDirectory.file("scripts/pre-push-hook.sh"))
hookOutput.set(projectDirectory.file(".git/hooks/pre-push").asFile) hookOutput.set(projectDirectory.file(".git/hooks/pre-push"))
} }
} }
} }

View file

@ -5,8 +5,8 @@
package app.passwordstore.gradle.tasks package app.passwordstore.gradle.tasks
import java.io.File
import java.nio.file.Files import java.nio.file.Files
import java.nio.file.StandardCopyOption
import java.nio.file.attribute.PosixFilePermission.GROUP_EXECUTE import java.nio.file.attribute.PosixFilePermission.GROUP_EXECUTE
import java.nio.file.attribute.PosixFilePermission.GROUP_READ import java.nio.file.attribute.PosixFilePermission.GROUP_READ
import java.nio.file.attribute.PosixFilePermission.OTHERS_EXECUTE import java.nio.file.attribute.PosixFilePermission.OTHERS_EXECUTE
@ -15,23 +15,31 @@ import java.nio.file.attribute.PosixFilePermission.OWNER_EXECUTE
import java.nio.file.attribute.PosixFilePermission.OWNER_READ import java.nio.file.attribute.PosixFilePermission.OWNER_READ
import java.nio.file.attribute.PosixFilePermission.OWNER_WRITE import java.nio.file.attribute.PosixFilePermission.OWNER_WRITE
import org.gradle.api.DefaultTask import org.gradle.api.DefaultTask
import org.gradle.api.provider.Property import org.gradle.api.file.RegularFileProperty
import org.gradle.api.tasks.CacheableTask import org.gradle.api.tasks.CacheableTask
import org.gradle.api.tasks.Input import org.gradle.api.tasks.InputFile
import org.gradle.api.tasks.OutputFile import org.gradle.api.tasks.OutputFile
import org.gradle.api.tasks.PathSensitive
import org.gradle.api.tasks.PathSensitivity
import org.gradle.api.tasks.TaskAction import org.gradle.api.tasks.TaskAction
@CacheableTask @CacheableTask
abstract class GitHooks : DefaultTask() { abstract class GitHooks : DefaultTask() {
@get:Input abstract val hookScript: Property<String> @get:InputFile
@get:PathSensitive(PathSensitivity.RELATIVE)
abstract val hookSource: RegularFileProperty
@get:OutputFile abstract val hookOutput: Property<File> @get:OutputFile abstract val hookOutput: RegularFileProperty
@TaskAction @TaskAction
fun install() { fun install() {
hookOutput.get().writeText(hookScript.get()) Files.copy(
hookSource.asFile.get().toPath(),
hookOutput.asFile.get().toPath(),
StandardCopyOption.REPLACE_EXISTING,
)
Files.setPosixFilePermissions( Files.setPosixFilePermissions(
hookOutput.get().toPath(), hookOutput.asFile.get().toPath(),
setOf( setOf(
OWNER_READ, OWNER_READ,
OWNER_WRITE, OWNER_WRITE,

View file

@ -4,7 +4,7 @@ set -e
set -u set -u
set -o pipefail set -o pipefail
ZERO=$(git hash-object --stdin </dev/null | tr '[0-9a-f]' '0') ZERO="0000000000000000000000000000000000000000"
GRADLE_EXEC="${GRADLE_EXEC:-./gradlew}" GRADLE_EXEC="${GRADLE_EXEC:-./gradlew}"
while read local_ref local_oid remote_ref remote_oid; do while read local_ref local_oid remote_ref remote_oid; do