{
"event": "PreToolUse",
"tool_name": "Write",
"tool_input": {
"file_path": "\/var\/www\/dev.campus.systemische-tools.de\/crawler\/src\/interfaces\/cli\/main.py",
"content": "from __future__ import annotations\n\nimport typer\n\nfrom src.domain.value_objects.enums import CrawlMode, TriggerSource\nfrom src.infrastructure.config.constants import DEFAULT_BASE_URL, HTTP_CONCURRENCY\nfrom src.interfaces.cli.commands import crawl as crawl_cmd\nfrom src.interfaces.cli.commands import diff as diff_cmd\nfrom src.interfaces.cli.commands import list_crawls as list_cmd\nfrom src.interfaces.cli.commands import recheck_external as recheck_cmd\nfrom src.interfaces.cli.commands import report as report_cmd\nfrom src.interfaces.cli.commands import status as status_cmd\nfrom src.interfaces.cli.wiring import build_container\n\napp = typer.Typer(add_completion=False, help=\"Campus-am-See Crawler\")\n\n\n@app.command()\ndef crawl(\n base_url: str = typer.Option(DEFAULT_BASE_URL, \"--base-url\"),\n mode: CrawlMode = typer.Option(CrawlMode.FAST, \"--mode\"),\n concurrency: int = typer.Option(HTTP_CONCURRENCY, \"--concurrency\"),\n max_urls: int | None = typer.Option(None, \"--max-urls\"),\n database: str = typer.Option(\"crawler\", \"--database\"),\n) -> None:\n container = build_container(database)\n crawl_id = crawl_cmd.sync_run_crawl(\n container, base_url=base_url, mode=mode, trigger=TriggerSource.CLI,\n concurrency=concurrency, max_urls=max_urls,\n )\n typer.echo(f\"crawl_id={crawl_id}\")\n\n\n@app.command(\"list\")\ndef list_cmd_handler(\n limit: int = typer.Option(20, \"--limit\"),\n database: str = typer.Option(\"crawler\", \"--database\"),\n) -> None:\n container = build_container(database)\n typer.echo(list_cmd.list_crawls_as_json(container, limit=limit))\n\n\n@app.command()\ndef report(\n crawl_id: int = typer.Option(..., \"--crawl-id\"),\n database: str = typer.Option(\"crawler\", \"--database\"),\n) -> None:\n container = build_container(database)\n typer.echo(report_cmd.report_as_json(container, crawl_id=crawl_id))\n\n\n@app.command()\ndef diff(\n from_crawl_id: int = typer.Option(..., \"--from\"),\n to_crawl_id: int = typer.Option(..., \"--to\"),\n database: str = typer.Option(\"crawler\", \"--database\"),\n) -> None:\n container = build_container(database)\n typer.echo(diff_cmd.diff_as_json(\n container, from_crawl_id=from_crawl_id, to_crawl_id=to_crawl_id,\n ))\n\n\n@app.command(\"recheck-external\")\ndef recheck_external_handler(\n crawl_id: int = typer.Option(..., \"--crawl-id\"),\n database: str = typer.Option(\"crawler\", \"--database\"),\n) -> None:\n container = build_container(database)\n count = recheck_cmd.recheck_external(container, crawl_id=crawl_id)\n typer.echo(f\"rechecked={count}\")\n\n\n@app.command()\ndef status(\n crawl_id: int = typer.Option(..., \"--crawl-id\"),\n database: str = typer.Option(\"crawler\", \"--database\"),\n) -> None:\n container = build_container(database)\n typer.echo(status_cmd.status_as_json(container, crawl_id=crawl_id))\n\n\nif __name__ == \"__main__\":\n app()\n"
}
}
{
"tool_response": {
"type": "create",
"filePath": "\/var\/www\/dev.campus.systemische-tools.de\/crawler\/src\/interfaces\/cli\/main.py",
"content": "from __future__ import annotations\n\nimport typer\n\nfrom src.domain.value_objects.enums import CrawlMode, TriggerSource\nfrom src.infrastructure.config.constants import DEFAULT_BASE_URL, HTTP_CONCURRENCY\nfrom src.interfaces.cli.commands import crawl as crawl_cmd\nfrom src.interfaces.cli.commands import diff as diff_cmd\nfrom src.interfaces.cli.commands import list_crawls as list_cmd\nfrom src.interfaces.cli.commands import recheck_external as recheck_cmd\nfrom src.interfaces.cli.commands import report as report_cmd\nfrom src.interfaces.cli.commands import status as status_cmd\nfrom src.interfaces.cli.wiring import build_container\n\napp = typer.Typer(add_completion=False, help=\"Campus-am-See Crawler\")\n\n\n@app.command()\ndef crawl(\n base_url: str = typer.Option(DEFAULT_BASE_URL, \"--base-url\"),\n mode: CrawlMode = typer.Option(CrawlMode.FAST, \"--mode\"),\n concurrency: int = typer.Option(HTTP_CONCURRENCY, \"--concurrency\"),\n max_urls: int | None = typer.Option(None, \"--max-urls\"),\n database: str = typer.Option(\"crawler\", \"--database\"),\n) -> None:\n container = build_container(database)\n crawl_id = crawl_cmd.sync_run_crawl(\n container, base_url=base_url, mode=mode, trigger=TriggerSource.CLI,\n concurrency=concurrency, max_urls=max_urls,\n )\n typer.echo(f\"crawl_id={crawl_id}\")\n\n\n@app.command(\"list\")\ndef list_cmd_handler(\n limit: int = typer.Option(20, \"--limit\"),\n database: str = typer.Option(\"crawler\", \"--database\"),\n) -> None:\n container = build_container(database)\n typer.echo(list_cmd.list_crawls_as_json(container, limit=limit))\n\n\n@app.command()\ndef report(\n crawl_id: int = typer.Option(..., \"--crawl-id\"),\n database: str = typer.Option(\"crawler\", \"--database\"),\n) -> None:\n container = build_container(database)\n typer.echo(report_cmd.report_as_json(container, crawl_id=crawl_id))\n\n\n@app.command()\ndef diff(\n from_crawl_id: int = typer.Option(..., \"--from\"),\n to_crawl_id: int = typer.Option(..., \"--to\"),\n database: str = typer.Option(\"crawler\", \"--database\"),\n) -> None:\n container = build_container(database)\n typer.echo(diff_cmd.diff_as_json(\n container, from_crawl_id=from_crawl_id, to_crawl_id=to_crawl_id,\n ))\n\n\n@app.command(\"recheck-external\")\ndef recheck_external_handler(\n crawl_id: int = typer.Option(..., \"--crawl-id\"),\n database: str = typer.Option(\"crawler\", \"--database\"),\n) -> None:\n container = build_container(database)\n count = recheck_cmd.recheck_external(container, crawl_id=crawl_id)\n typer.echo(f\"rechecked={count}\")\n\n\n@app.command()\ndef status(\n crawl_id: int = typer.Option(..., \"--crawl-id\"),\n database: str = typer.Option(\"crawler\", \"--database\"),\n) -> None:\n container = build_container(database)\n typer.echo(status_cmd.status_as_json(container, crawl_id=crawl_id))\n\n\nif __name__ == \"__main__\":\n app()\n",
"structuredPatch": [],
"originalFile": null,
"userModified": false
}
}