Reduce scope of the git hook script

The git hook script should only extract the necessary information the build
script needs to operate. Right now this is only the commit before the push and
after the push, and the refname is added for future use.

The name of the variables passed to the laminar build are modeled after those
found in the GitLab CI documentation, just for some familiarity.

The functionality of finding the relevant directories has been moved to the
build script.
This commit is contained in:
Tom Willemse 2023-12-16 23:50:11 -08:00
parent ae458763ae
commit 7f1c755c4e

View file

@ -3,26 +3,21 @@
from shlex import quote from shlex import quote
from subprocess import run from subprocess import run
import os import os
import re
import sys import sys
directories = set()
for line in sys.stdin: for line in sys.stdin:
precommit, postcommit, refname = line.split(' ') precommit, postcommit, refname = line.strip().split(' ')
if not refname == "refs/heads/main": if not refname == "refs/heads/main":
print(f"Skipping ref {refname}") print(f"Skipping ref \"{refname}\"")
continue continue
print(f"precommit: {precommit}; postcommit: {postcommit}; refname: {refname}") os.putenv("LAMINAR_REASON", "Push to git repository")
cmd = "laminarc queue freeloadio " \
if not re.match(r"^0+$", precommit): f"CI_COMMIT_BEFORE_SHA={quote(precommit)} " \
process = run(f"git diff --name-only {quote(precommit)} {quote(postcommit)}", shell=True, capture_output=True) f"CI_COMMIT_SHA={quote(postcommit)} " \
for filename in process.stdout.strip().split(b'\n'): f"CI_COMMIT_REF_NAME={quote(refname)}"
directories.add(os.path.dirname(filename).decode()) print(cmd)
process = run(cmd, shell=True, capture_output=True)
os.putenv("LAMINAR_REASON", "Push to git repository") buildname, buildrun = process.stdout.decode().strip().split(':')
process = run(f"laminarc queue freeloadio directories={quote(str.join(';', directories))}", shell=True, capture_output=True) print(f"Queued build: https://laminar.ryuslash.org/jobs/{buildname}/{buildrun}")
buildname, buildrun = process.stdout.strip().split(b':')
print(f"Queued build: https://laminar.ryuslash.org/jobs/{buildname}/{buildrun}")