#!/usr/bin/env python3 """Generate Fold's C++ embedded skill header from the canonical SKILL.md.""" from __future__ import annotations import argparse from pathlib import Path DELIMITER = "FOLDSKILL" def render(skill: str) -> str: terminator = f'){DELIMITER}"' if terminator in skill: raise ValueError( f"skill contains reserved raw-string terminator {terminator!r}" ) return ( "#pragma once\n\n" "namespace fold::cli {\n\n" f'inline constexpr const char* kEmbeddedFoldSkill = R"{DELIMITER}(' f"{skill}" f'){DELIMITER}";\n\n' "} // namespace fold::cli\n" ) def main() -> int: parser = argparse.ArgumentParser() parser.add_argument("--input", type=Path, required=True) parser.add_argument("--output", type=Path, required=True) parser.add_argument("--check", action="store_true") args = parser.parse_args() generated = render(args.input.read_text(encoding="utf-8")) if args.check: if ( not args.output.exists() or args.output.read_text(encoding="utf-8") != generated ): print(f"generated embedded skill is stale: {args.output}") return 1 return 0 args.output.parent.mkdir(parents=True, exist_ok=True) args.output.write_text(generated, encoding="utf-8") return 0 if __name__ == "__main__": raise SystemExit(main())