from __future__ import annotations import argparse from pathlib import Path from docx_ops_lib import apply_patch_document, read_json, render_docx, write_json def main() -> None: parser = argparse.ArgumentParser() parser.add_argument("--patch-file", required=True) parser.add_argument("--report", required=True) parser.add_argument("--render-check", action="store_true") parser.add_argument("--render-dir") args = parser.parse_args() patch_data = read_json(Path(args.patch_file).resolve()) report = apply_patch_document(patch_data) if args.render_check: output_docx = Path(report["output_docx"]).resolve() render_dir = Path(args.render_dir).resolve() if args.render_dir else output_docx.parent / f"{output_docx.stem}_render" report["render"] = render_docx( output_docx, render_dir, docx_style_profile=report.get("docx_style_profile", "default_bid"), numbering_mode=report.get("numbering_mode", "explicit_text"), document_kind=patch_data.get("document_kind", "assembled"), ) write_json(Path(args.report).resolve(), report) if __name__ == "__main__": main()