51 lines
2.0 KiB
Python
51 lines
2.0 KiB
Python
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())
|