summaryrefslogtreecommitdiff
path: root/deploy.py
blob: a78649befde8b50da440850d17e71cb74b14ee92 (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
#!/usr/bin/env python3

import tempfile
import subprocess
from pathlib import Path

if __name__ == '__main__':
    with tempfile.TemporaryDirectory() as tmpdir:

        current_branch = subprocess.run(['git', 'symbolic-ref', '-q', 'HEAD'], check=False, capture_output=True).stdout.strip()
        if current_branch == 'refs/heads/deploy':
            raise SystemError('This script cannot be run from the deploy branch (run from main instead)')

        subprocess.run(['git', 'worktree', 'add', '--detach', tmpdir], check=True)
        try:
            subprocess.run(['hugo'], cwd=tmpdir, check=True)
            subprocess.run(['git', 'add', '--force', 'public'], cwd=tmpdir, check=True)
            write_tree = subprocess.run(['git', 'write-tree', '--prefix=public/'], cwd=tmpdir, check=True, capture_output=True)
            tree = write_tree.stdout.strip()
        
            commit = subprocess.run(['git', 'commit-tree', '-p', 'HEAD', '-p', 'refs/heads/deploy', '-m', 'deploy.py auto-commit', tree], cwd=tmpdir, check=True, capture_output=True).stdout.strip()
            subprocess.run(['git', 'update-ref', '-m', f'deploy.sh update deploy branch to {commit}', 'refs/heads/deploy', commit], cwd=tmpdir, check=True)

        finally:
            subprocess.run(['git', 'worktree', 'remove', '-f', tmpdir], check=True)