Spaces:
Sleeping
Sleeping
| """ | |
| build.py | |
| -------- | |
| Markdown → JSON 的 build pipeline。 | |
| 職責: | |
| 讀取 paths.json → 對每個任務呼叫 Test2ChMd._export_one → 輸出 JSON | |
| 與 app.py 完全解耦,可用兩種方式執行: | |
| A. 命令列(手動重建): | |
| python build.py # 使用預設 paths.json | |
| python build.py paths_ch15.json # 指定 config | |
| python build.py paths.json --force # 強制重建全部 | |
| B. 由 app.py import 並在啟動時呼叫: | |
| from build import build_if_needed | |
| build_if_needed(CONFIG_PATH, force=False) # 只重建有異動的任務 | |
| """ | |
| from __future__ import annotations | |
| import sys | |
| from pathlib import Path | |
| # Test2ChMd 放在同層或 layout/ 下,依實際位置選一種 | |
| from layout.converter.md_pipeline import build_from_config | |
| def build_if_needed( | |
| config_path: str | Path = "paths.json", | |
| *, | |
| force: bool = False, | |
| ) -> list[Path]: | |
| """ | |
| 執行 build pipeline。 | |
| config_path:paths.json 路徑(絕對或相對於 CWD) | |
| force:True → 強制重建全部任務;False → 只重建比 md 舊的 json | |
| """ | |
| return build_from_config(config_path, force=force) | |
| # --------------------------------------------------------------------------- | |
| # 命令列介面 | |
| # --------------------------------------------------------------------------- | |
| if __name__ == "__main__": | |
| import argparse | |
| parser = argparse.ArgumentParser( | |
| description="把 paths.json 中的 Markdown 轉換成 JSON" | |
| ) | |
| parser.add_argument( | |
| "config", | |
| nargs="?", | |
| default="paths.json", | |
| help="paths.json 的路徑(預設:./paths.json)", | |
| ) | |
| parser.add_argument( | |
| "--force", | |
| action="store_true", | |
| help="強制重建全部任務(忽略 up_to_date 設定)", | |
| ) | |
| args = parser.parse_args() | |
| outputs = build_if_needed(args.config, force=args.force) | |
| print(f"\n完成:共輸出 {len(outputs)} 個 JSON 檔案。") | |