#!/usr/bin/env python3 import os import pathlib import subprocess import sys import tempfile target_ref = "refs/heads/master" pushed_commit = None uv = pathlib.Path.home() / ".local" / "bin" / "uv" dest = pathlib.Path.home() / "public_html" refs = sys.stdin.readlines() for ref in refs: _from, to, ref = ref.split() if ref == target_ref: pushed_commit = to if not pushed_commit: print("Not pushing to {target_ref}, move on") sys.exit(0) print(f"Building {pushed_commit}", flush=True) with tempfile.TemporaryDirectory() as tempdir: tempdir = pathlib.Path(tempdir) repo = tempdir / "repo" subprocess.run(["git", "worktree", "add", repo, pushed_commit], check=True) blog = repo / "blog" os.chdir(blog) built = tempdir / "built" subprocess.run([uv, "run", "blog", "build", blog, built], check=True) subprocess.run(["rsync", "-r", "--delete-after", f"{built}/", f"{dest}/"], check=True)