from __future__ import annotations import argparse from pathlib import Path from .audit import render_markdown, summarize_reports from .runner import run_daily_report def build_parser() -> argparse.ArgumentParser: parser = argparse.ArgumentParser(prog="ai-daily-report") subcommands = parser.add_subparsers(dest="command") run = subcommands.add_parser("run") run.add_argument("--date", default="today") run.add_argument("--mode", choices=["dry-run", "draft", "publish"], default="dry-run") run.add_argument("--source-mode", choices=["mock", "live"], default="mock") run.add_argument("--llm-mode", choices=["mock", "live"], default="mock") run.add_argument("--out-dir", default="runs") run.add_argument("--base-url", default="https://blog.ephron.ren") run.add_argument("--sources-path", default=None) run.add_argument("--pipeline-path", default=None) run.add_argument("--history-path", default=None) audit = subcommands.add_parser("audit") audit.add_argument("--out-dir", default=str(Path.home() / ".hermes" / "scripts" / "ai_morning_out")) audit.add_argument("--limit-days", type=int, default=7) return parser def main(argv: list[str] | None = None) -> int: parser = build_parser() args = parser.parse_args(argv) if args.command == "run": run_daily_report( run_date=args.date, mode=args.mode, source_mode=args.source_mode, llm_mode=args.llm_mode, out_dir=Path(args.out_dir), base_url=args.base_url, sources_path=Path(args.sources_path) if args.sources_path else None, pipeline_path=Path(args.pipeline_path) if args.pipeline_path else None, history_path=Path(args.history_path) if args.history_path else None, ) elif args.command == "audit": print(render_markdown(summarize_reports(Path(args.out_dir), limit_days=args.limit_days))) return 0 if __name__ == "__main__": raise SystemExit(main())