import os import hashlib from .security import get_safe_path, PROJECTS_DIR from .state import load_staging, load_ledger, save_ledger import sys def compile_page(project_name, page_id): staging = load_staging(project_name) ledger = load_ledger(project_name) task = next((t for t in ledger.get("task_queue", []) if t["page_id"] == page_id), None) if not task: return {"status": "error", "reason": f"Task '{page_id}' not found in task_queue."} # 1. Source File Reader src_file = get_safe_path(PROJECTS_DIR, project_name, "src", task["filename"]) if not os.path.exists(src_file): err_msg = f"Source file '{task['filename']}' not found in src directory." print(f"[Compiler] Error: {err_msg}", file=sys.stderr) return {"status": "error", "reason": err_msg} with open(src_file, "r", encoding="utf-8") as bf: content_html = bf.read() # 2. Assemble Document styles = staging.get("style_tokens", {}) full_document = f"""