aboutsummaryrefslogtreecommitdiff
path: root/blog/post-receive
blob: d5f2667642a67d59315cc90e1019b946432bb9db (plain)
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)