52 lines
1.6 KiB
Python
52 lines
1.6 KiB
Python
#!/usr/bin/env python3
|
||
"""Verify IMAGES_REGISTRY.md entries exist on disk and match .typ references."""
|
||
from __future__ import annotations
|
||
|
||
import re
|
||
import sys
|
||
from pathlib import Path
|
||
|
||
|
||
def main() -> int:
|
||
report = Path(__file__).resolve().parent.parent
|
||
repo = report.parent
|
||
images = report / "images"
|
||
registry = images / "IMAGES_REGISTRY.md"
|
||
typ = report / "Пояснительная_записка_ПытковРЕ.typ"
|
||
errors = 0
|
||
|
||
if not registry.exists():
|
||
print("Missing IMAGES_REGISTRY.md", file=sys.stderr)
|
||
return 1
|
||
|
||
rows = re.findall(
|
||
r"\|\s*\d+\s*\|\s*([^\|]+?)\s*\|\s*(\w+)\s*\|",
|
||
registry.read_text(encoding="utf-8"),
|
||
)
|
||
rows = [(f.strip(), s.strip()) for f, s in rows if f.startswith("fig_")]
|
||
for fname, status in rows:
|
||
p = images / fname
|
||
if not p.exists():
|
||
print(f"MISSING file: {fname} (status {status})", file=sys.stderr)
|
||
errors += 1
|
||
elif status == "ready" and p.stat().st_size < 1000:
|
||
print(f"WARN small file: {fname}", file=sys.stderr)
|
||
|
||
if typ.exists():
|
||
text = typ.read_text(encoding="utf-8")
|
||
for m in re.finditer(r'image\("(?:Report/)?images/([^"]+)"', text):
|
||
f = images / m.group(1)
|
||
if not f.exists():
|
||
print(f"MISSING in typ: images/{m.group(1)}", file=sys.stderr)
|
||
errors += 1
|
||
|
||
if errors:
|
||
print(f"check_images: {errors} error(s)", file=sys.stderr)
|
||
return 1
|
||
print("check_images: OK", file=sys.stderr)
|
||
return 0
|
||
|
||
|
||
if __name__ == "__main__":
|
||
raise SystemExit(main())
|