28 lines
991 B
Python
Executable file
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}")
|