For some reason, newer hugo versions have trouble with .summary, and on some pages where .summary is not defined in the page header metadata, when rendering the page as a preview card, hugo swallows the card's closing </div> tag. Such a weird bug, we now just work around it by explicitly setting the .summary meta on pages that cause this bug(?) to surface.
33 lines
1.8 KiB
Python
33 lines
1.8 KiB
Python
#!/usr/bin/env python3
|
|
|
|
import os
|
|
import tempfile
|
|
import subprocess
|
|
from pathlib import Path
|
|
|
|
if __name__ == '__main__':
|
|
with tempfile.TemporaryDirectory() as tmpdir:
|
|
pagefind = Path('~/.cargo/bin/pagefind').expanduser()
|
|
pagefind = str(pagefind) if pagefind.is_file() else 'pagefind'
|
|
|
|
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:
|
|
env = dict(os.environ)
|
|
env['PATH'] = f'{Path("hack").absolute()}:{env["PATH"]}'
|
|
hugo = os.environ.get('HUGO', 'hugo')
|
|
subprocess.run([hugo], cwd=tmpdir, check=True, env=env)
|
|
subprocess.run([pagefind, '--site', 'public'], cwd=tmpdir, check=True, env=env)
|
|
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)
|
|
|
|
subprocess.run(['git', 'push', 'git@git.jaseg.de:blog.git', 'deploy'], cwd=tmpdir, check=True)
|
|
finally:
|
|
subprocess.run(['git', 'worktree', 'remove', '-f', tmpdir], check=True)
|