from __future__ import annotations import argparse from pathlib import Path from src.engine import InteractiveRunner, StoryEngine from src.parser import StoryValidationError, parse_story def build_arg_parser() -> argparse.ArgumentParser: parser = argparse.ArgumentParser(description="simple-ink: 命令行交互式小说框架") parser.add_argument( "--story", type=Path, default=Path("data/main_story.yaml"), help="故事配置文件路径(YAML)", ) parser.add_argument( "--load", type=Path, default=None, help="启动时立即加载存档路径", ) return parser def main() -> int: args = build_arg_parser().parse_args() try: parsed = parse_story(args.story) except StoryValidationError as exc: print(f"故事配置错误: {exc}") return 2 for warning in parsed.warnings: print(f"[warning] {warning}") engine = StoryEngine(parsed.story) if args.load is not None: try: engine.load(args.load) except Exception as exc: print(f"加载启动存档失败: {exc}") return 3 runner = InteractiveRunner(engine) runner.run() return 0 if __name__ == "__main__": raise SystemExit(main())