Files
gaokao-volunteer-system/data/cli_compat_retention_cleanup.py
Hermes a57522b11e
Some checks failed
CI / pytest (Python 3.10) (push) Has been cancelled
CI / pytest (Python 3.11) (push) Has been cancelled
CI / pytest (Python 3.12) (push) Has been cancelled
feat(cli): delegate channel/delivery/retention/backup to gaokao-cli (phase 3 batch 3)
Round 3 of the unified gaokao-cli rollout. Adds four more passthrough
markers so the unified entry point can drive the remaining ops scripts
without bringing new data models into data/.

- data/cli_compat_delivery_dispatch.py: runpy shim for
  scripts/gaokao-delivery-dispatch.py (DispatchDeliveryEvents).
- data/cli_compat_delivery_watchdog.py: runpy shim for
  scripts/gaokao-delivery-watchdog.py (WatchdogDeliveryEvents).
- data/cli_compat_retention_cleanup.py: runpy shim for
  scripts/gaokao-retention-cleanup.py (OrderRetentionCleanup).
- data/cli_compat_channel_fallback.py: forwarder for
  data.channel_sync.monitor.main (CheckChannelHealth /
  ManualTemplate).
- data/cli_compat_backup.py: subprocess wrapper that dispatches
  scripts/backup_snapshot.sh and scripts/backup_verify.sh.
- data/rules/cli.py main(): routes gaokao-cli {channel, delivery
  {dispatch,watchdog}, retention, backup {snapshot,verify}} to the
  shims; rejects unknown subcommands with a structured error.
- docs/CLI_API_MAPPING.md §2.1: now lists 12 top-level commands with
  their real subcommands and fallback paths.
- tests/test_cli_doctor_phase3.py: +6 tests covering channel
  delegation, delivery dispatch / unknown-subcommand, retention
  routing, backup shell routing, and backup unknown-subcommand
  rejection.

Verification:
- focused: 12 passed
- dev-verify full gate: all checks passed (ruff / mypy / coverage /
  pytest / benchmark)
2026-06-17 22:18:57 +08:00

26 lines
737 B
Python

"""Thin import shim for `scripts/gaokao-retention-cleanup.py`."""
from __future__ import annotations
import runpy
import sys
from pathlib import Path
_SCRIPT_PATH = (
Path(__file__).resolve().parent.parent / "scripts" / "gaokao-retention-cleanup.py"
)
def main(argv: list[str] | None = None) -> int:
if not _SCRIPT_PATH.is_file():
raise FileNotFoundError(f"gaokao-retention-cleanup not found at {_SCRIPT_PATH}")
previous_argv = sys.argv
try:
sys.argv = [str(_SCRIPT_PATH), *(argv or [])]
runpy.run_path(str(_SCRIPT_PATH), run_name="__main__")
except SystemExit as exc:
return int(exc.code) if exc.code is not None else 0
finally:
sys.argv = previous_argv
return 0