story_events.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. from __future__ import annotations
  4. import argparse
  5. import json
  6. import sys
  7. from pathlib import Path
  8. from runtime_compat import enable_windows_utf8_stdio
  9. from data_modules.event_log_store import EventLogStore
  10. def main() -> None:
  11. parser = argparse.ArgumentParser(description="Story events CLI")
  12. parser.add_argument("--project-root", required=True)
  13. parser.add_argument("--chapter", type=int, default=0)
  14. parser.add_argument("--limit", type=int, default=200)
  15. parser.add_argument("--health", action="store_true")
  16. args = parser.parse_args()
  17. store = EventLogStore(Path(args.project_root))
  18. if args.health:
  19. print(json.dumps(store.health(), ensure_ascii=False))
  20. return
  21. if args.chapter:
  22. print(
  23. json.dumps(
  24. {"chapter": args.chapter, "events": store.read_events(args.chapter)},
  25. ensure_ascii=False,
  26. )
  27. )
  28. return
  29. print(json.dumps({"events": store.list_recent(limit=args.limit)}, ensure_ascii=False))
  30. if __name__ == "__main__":
  31. if sys.platform == "win32":
  32. enable_windows_utf8_stdio()
  33. main()