git-lfs-test/build/git-post-receive-hook

28 lines
991 B
Python
Executable file

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