diff options
-rw-r--r-- | deploy.py | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/deploy.py b/deploy.py new file mode 100644 index 0000000..23edc18 --- /dev/null +++ b/deploy.py @@ -0,0 +1,24 @@ +#!/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) + write_tree = subprocess.run(['git', 'write-tree', '--prefix=public/'], 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], 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], check=True) + + finally: + subprocess.run(['git', 'worktree', 'remove', '-f', tmpdir], check=True) |