50 lines
1.7 KiB
Python
50 lines
1.7 KiB
Python
#!/usr/bin/env python3
|
|
"""Offline checks for the architecture package; no cloud calls or provisioning."""
|
|
from pathlib import Path
|
|
import re, sys
|
|
root = Path(__file__).parents[1]
|
|
|
|
def get_file_path(filename):
|
|
search_dirs = [
|
|
root / "deliverables" / "as-is",
|
|
root / "deliverables" / "target",
|
|
root / "deliverables" / "validation",
|
|
root / "deliverables" / "guides",
|
|
root / "deliverables",
|
|
root / "docs",
|
|
root,
|
|
]
|
|
for d in search_dirs:
|
|
candidate = d / filename
|
|
if candidate.is_file():
|
|
return candidate
|
|
return root / "deliverables" / "guides" / filename
|
|
|
|
required_files = [
|
|
get_file_path("requirements.md"),
|
|
get_file_path("architecture.md"),
|
|
get_file_path("architecture.mmd"),
|
|
get_file_path("solution-architecture-guide.md"),
|
|
root / "terraform" / "main.tf",
|
|
root / "terraform" / "variables.tf",
|
|
]
|
|
|
|
missing = [str(p.relative_to(root)) for p in required_files if not p.is_file()]
|
|
|
|
guide_path = get_file_path("solution-architecture-guide.md")
|
|
if guide_path.is_file():
|
|
text = guide_path.read_text(encoding="utf-8")
|
|
checks = ["Functional requirements", "Selected products", "Validation results", "Terraform", "Mermaid"]
|
|
missing += [f"guide section: {x}" for x in checks if x not in text]
|
|
else:
|
|
missing.append("solution-architecture-guide.md")
|
|
|
|
mmd_path = get_file_path("architecture.mmd")
|
|
if mmd_path.is_file():
|
|
if not re.search(r"flowchart|graph", mmd_path.read_text(encoding="utf-8")):
|
|
missing.append("Mermaid graph")
|
|
|
|
if missing:
|
|
print("FAIL: " + ", ".join(missing)); sys.exit(1)
|
|
print("PASS: required architecture artifacts and guide sections are present")
|