cmc/cleberg.net

My personal web garden & blog.

clone: git clone https://gitbay.org/cmc/cleberg.net.git

de23fd88828d63f64f0a137b2fb6e87eaa7e1ce6

signed_unknown_key

author: Christian Cleberg <hello@cleberg.net> · 2026-02-22T17:46:46Z
committer: <noreply@github.com>

fix: ensure .org filenames match .html filenames (#16)

 build.py | 22 +++++++++++++++++++++-
 1 file changed, 21 insertions(+), 1 deletion(-)

diff --git a/build.py b/build.py
index f6d8699..7c466f2 100644
--- a/build.py
+++ b/build.py
@@ -272,7 +272,27 @@ def copy_org_sources(content_dir="./content", build_dir="./.build/org"):
     print(f"Copying org sources: {content_dir} → {build_dir}")
     if os.path.exists(build_dir):
         shutil.rmtree(build_dir)
-    shutil.copytree(content_dir, build_dir)
+
+    slug_pattern = re.compile(r"^#\+slug:\s*(.+)$", re.IGNORECASE)
+
+    for src_path in Path(content_dir).rglob("*.org"):
+        rel_dir = src_path.parent.relative_to(content_dir)
+        dest_dir = Path(build_dir) / rel_dir
+        dest_dir.mkdir(parents=True, exist_ok=True)
+
+        # Try to extract slug from file headers
+        slug = None
+        with src_path.open("r", encoding="utf-8") as f:
+            for line in f:
+                m = slug_pattern.match(line)
+                if m:
+                    slug = m.group(1).strip()
+                    break
+
+        dest_name = f"{slug}.org" if slug else src_path.name
+        shutil.copy2(src_path, dest_dir / dest_name)
+        if slug:
+            print(f"  {src_path.name} → {dest_name}")
 
 
 def generate_sitemap(build_dir=".build", base_url="https://cleberg.net"):