Skill-BidCreater/scripts/docx_patch.py
2026-03-14 17:00:12 +08:00

34 lines
1.2 KiB
Python

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()