59 lines
1.7 KiB
Python
59 lines
1.7 KiB
Python
from __future__ import annotations
|
|
|
|
import argparse
|
|
import subprocess
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
|
|
def main() -> None:
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument("--project", required=True)
|
|
parser.add_argument(
|
|
"--mode",
|
|
required=True,
|
|
help="低层开发辅助操作。真正 workflow 由 SKILL.md 定义,不由 CLI 固定。",
|
|
)
|
|
parser.add_argument("--outline")
|
|
parser.add_argument("--content")
|
|
parser.add_argument("--input")
|
|
parser.add_argument("--out")
|
|
parser.add_argument("--bundle")
|
|
args = parser.parse_args()
|
|
|
|
mode_aliases = {
|
|
"extract": "parse-rfp",
|
|
"review-outline": "render-outline",
|
|
"compose": "render-bid",
|
|
"scan-materials": "scan-project",
|
|
"safe-write-json": "write-large-json",
|
|
}
|
|
selected_mode = mode_aliases.get(args.mode, args.mode)
|
|
valid_modes = {"parse-rfp", "scan-project", "render-outline", "render-bid", "write-large-json"}
|
|
if selected_mode not in valid_modes:
|
|
raise ValueError(f"不支持的 mode: {args.mode}。允许值:{', '.join(sorted(valid_modes))}")
|
|
|
|
command = [
|
|
sys.executable,
|
|
str(Path(__file__).resolve().parent / "run_project_pipeline.py"),
|
|
"--project",
|
|
args.project,
|
|
"--tool",
|
|
selected_mode,
|
|
]
|
|
if args.outline:
|
|
command.extend(["--outline", args.outline])
|
|
if args.content:
|
|
command.extend(["--content", args.content])
|
|
if args.input:
|
|
command.extend(["--input", args.input])
|
|
if args.out:
|
|
command.extend(["--out", args.out])
|
|
if args.bundle:
|
|
command.extend(["--bundle", args.bundle])
|
|
subprocess.run(command, check=True)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|