| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- from __future__ import annotations
- import argparse
- import json
- import sys
- from pathlib import Path
- from typing import Any
- ROOT = Path(__file__).resolve().parents[1]
- if str(ROOT) not in sys.path:
- sys.path.insert(0, str(ROOT))
- from content_agent.integrations.walk_strategy_json import (
- RULE_PACK_PATH,
- WALK_STRATEGY_PATH,
- validate_walk_strategy_config,
- )
- def main() -> int:
- args = _parse_args()
- path = args.config_path if args.config_path.is_absolute() else _repo_root() / args.config_path
- strategy = json.loads(path.read_text(encoding="utf-8"))
- root_dir = _repo_root()
- findings = validate_walk_strategy_config(
- strategy,
- root_dir=root_dir,
- strategy_path=path.relative_to(root_dir),
- rule_pack_path=RULE_PACK_PATH,
- )
- result: dict[str, Any] = {
- "status": "fail" if any(finding["level"] == "fail" for finding in findings) else "pass",
- "config_path": str(path.relative_to(root_dir)),
- "walk_strategy_version": strategy.get("strategy_version"),
- "findings": findings,
- }
- print(json.dumps(result, ensure_ascii=False, indent=2))
- return 1 if result["status"] == "fail" else 0
- def _parse_args() -> argparse.Namespace:
- parser = argparse.ArgumentParser()
- parser.add_argument(
- "config_path",
- nargs="?",
- type=Path,
- default=_repo_root() / WALK_STRATEGY_PATH,
- )
- return parser.parse_args()
- def _repo_root() -> Path:
- return Path(__file__).resolve().parents[1]
- if __name__ == "__main__":
- sys.exit(main())
|