1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
#!/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)
|