diff options
| author | Paweł Redman <pawel.redman@gmail.com> | 2026-06-14 20:40:20 +0200 |
|---|---|---|
| committer | Paweł Redman <pawel.redman@gmail.com> | 2026-06-14 20:40:20 +0200 |
| commit | e98fac942f149b9870790c112e082733b40535a9 (patch) | |
| tree | cfc7252e87cc5200788f8702ba957d8210f2833d /build.py | |
| parent | 93cac33726ad0e41cb165607a9d0e680bcd987ff (diff) | |
just + linters
Diffstat (limited to 'build.py')
| -rw-r--r-- | build.py | 36 |
1 files changed, 18 insertions, 18 deletions
@@ -2,7 +2,6 @@ import json import os -import re import shutil from dataclasses import dataclass from datetime import datetime @@ -19,8 +18,6 @@ class CompiledPage: date: datetime - - class Builder: def __init__(self, site_dir: Path, static_dir: Path, public_dir: Path) -> None: self.site_dir = site_dir @@ -31,18 +28,20 @@ class Builder: def _compile_typst_page(self, path: Path) -> CompiledPage: relative_path = path.relative_to(self.content_dir) - print(relative_path) + print(f'Typst: {relative_path}') output_path = self.public_dir / relative_path.with_suffix('.html') output_path.parent.mkdir(parents=True, exist_ok=True) self.compiler.compile(input=path, output=output_path) - metadata = json.loads(self.compiler.query( - selector='<post-meta>', - field='value', - one=True, - )) + metadata = json.loads( + self.compiler.query( + selector='<post-meta>', + field='value', + one=True, + ) + ) return CompiledPage( url=str(relative_path.with_suffix('.html')), @@ -55,32 +54,33 @@ class Builder: ) def _compile_typst_pages(self) -> list[CompiledPage]: - return [ - self._compile_typst_page(path) - for path in self.content_dir.rglob('*.typ') - ] + return [self._compile_typst_page(path) for path in self.content_dir.rglob('*.typ')] def _compile_index_page(self, pages: list[CompiledPage]) -> None: pages.sort(key=lambda page: page.date) template = jinja2.Template((self.site_dir / 'index.html').read_text()) (self.public_dir / 'index.html').write_text(template.render(pages=pages)) - def build(self) -> None: + print(f'Removing {str(self.public_dir)!r}...') + shutil.rmtree(self.public_dir, ignore_errors=True) + self.public_dir.mkdir(parents=True, exist_ok=True) + + print('Linking static directory...') + (self.public_dir / 'static').symlink_to(self.static_dir) + pages = self._compile_typst_pages() + + print('Building index page...') self._compile_index_page(pages) def main() -> None: repo_dir = Path(__file__).parent site_dir = repo_dir / 'site' - content_dir = site_dir / 'content' public_dir = repo_dir / 'public' static_dir = repo_dir / 'static' - shutil.rmtree(public_dir, ignore_errors=True) - shutil.copytree(repo_dir / 'static', public_dir / 'static') - os.environ['TYPST_FEATURES'] = 'html' builder = Builder(site_dir=site_dir, static_dir=static_dir, public_dir=public_dir) |
