summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--deploy.py24
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)