Initial SQL-only 1C adapter baseline
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import json
|
||||
from pathlib import Path
|
||||
from typing import Any
|
||||
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
DEFAULT_ROOT = ROOT / "plugins" / "1c" / "rag" / "official-docs"
|
||||
PRIVATE_DIRS = ("raw", "normalized")
|
||||
ALLOWED_PRIVATE_FILES = {".gitkeep"}
|
||||
|
||||
|
||||
def check_private_artifacts(root: Path) -> dict[str, Any]:
|
||||
findings: list[dict[str, Any]] = []
|
||||
counts = {"private_files": 0, "unexpected_private_files": 0}
|
||||
for dirname in PRIVATE_DIRS:
|
||||
directory = root / dirname
|
||||
if not directory.exists():
|
||||
findings.append({"severity": "warning", "code": "missing_private_dir", "path": str(directory)})
|
||||
continue
|
||||
for path in sorted(item for item in directory.rglob("*") if item.is_file()):
|
||||
if path.name in ALLOWED_PRIVATE_FILES:
|
||||
continue
|
||||
counts["private_files"] += 1
|
||||
counts["unexpected_private_files"] += 1
|
||||
findings.append(
|
||||
{
|
||||
"severity": "info",
|
||||
"code": "private_artifact_present",
|
||||
"message": "Private official documentation artifact exists locally; it must remain ignored and uncommitted.",
|
||||
"path": str(path),
|
||||
}
|
||||
)
|
||||
return {
|
||||
"schema": "onec_official_docs_private_artifact_check.v1",
|
||||
"root": str(root),
|
||||
"passed": not any(item["severity"] == "error" for item in findings),
|
||||
"counts": counts,
|
||||
"findings": findings,
|
||||
}
|
||||
|
||||
|
||||
def main() -> int:
|
||||
parser = argparse.ArgumentParser(description="Check local private 1C official-doc artifacts.")
|
||||
parser.add_argument("--root", type=Path, default=DEFAULT_ROOT)
|
||||
parser.add_argument("--output", type=Path)
|
||||
args = parser.parse_args()
|
||||
|
||||
result = check_private_artifacts(args.root)
|
||||
if args.output:
|
||||
args.output.parent.mkdir(parents=True, exist_ok=True)
|
||||
args.output.write_text(json.dumps(result, ensure_ascii=False, indent=2) + "\n", encoding="utf-8")
|
||||
print(json.dumps({"passed": result["passed"], "counts": result["counts"], "output": str(args.output) if args.output else None}, ensure_ascii=False))
|
||||
return 0 if result["passed"] else 2
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
Reference in New Issue
Block a user