54 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
#!/usr/bin/env python3
 | 
						|
"""Ensure CLI parity matrix contains no outstanding blockers before release."""
 | 
						|
from __future__ import annotations
 | 
						|
 | 
						|
import pathlib
 | 
						|
import re
 | 
						|
import sys
 | 
						|
 | 
						|
REPO_ROOT = pathlib.Path(__file__).resolve().parents[2]
 | 
						|
PARITY_DOC = REPO_ROOT / "docs/cli-vs-ui-parity.md"
 | 
						|
 | 
						|
BLOCKERS = {
 | 
						|
    "🟥": "blocking gap",
 | 
						|
    "❌": "missing feature",
 | 
						|
    "🚫": "unsupported",
 | 
						|
}
 | 
						|
WARNINGS = {
 | 
						|
    "🟡": "partial support",
 | 
						|
    "⚠️": "warning",
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
def main() -> int:
 | 
						|
    if not PARITY_DOC.exists():
 | 
						|
        print(f"❌ Parity matrix not found at {PARITY_DOC}", file=sys.stderr)
 | 
						|
        return 1
 | 
						|
    text = PARITY_DOC.read_text(encoding="utf-8")
 | 
						|
    blockers: list[str] = []
 | 
						|
    warnings: list[str] = []
 | 
						|
    for line in text.splitlines():
 | 
						|
        for symbol, label in BLOCKERS.items():
 | 
						|
            if symbol in line:
 | 
						|
                blockers.append(f"{label}: {line.strip()}")
 | 
						|
        for symbol, label in WARNINGS.items():
 | 
						|
            if symbol in line:
 | 
						|
                warnings.append(f"{label}: {line.strip()}")
 | 
						|
    if blockers:
 | 
						|
        print("❌ CLI parity gate failed — blocking items present:", file=sys.stderr)
 | 
						|
        for item in blockers:
 | 
						|
            print(f"  - {item}", file=sys.stderr)
 | 
						|
        return 1
 | 
						|
    if warnings:
 | 
						|
        print("⚠️ CLI parity gate warnings detected:", file=sys.stderr)
 | 
						|
        for item in warnings:
 | 
						|
            print(f"  - {item}", file=sys.stderr)
 | 
						|
        print("Treat warnings as failures until parity matrix is fully green.", file=sys.stderr)
 | 
						|
        return 1
 | 
						|
    print("✅ CLI parity matrix has no blocking or warning entries.")
 | 
						|
    return 0
 | 
						|
 | 
						|
 | 
						|
if __name__ == "__main__":
 | 
						|
    raise SystemExit(main())
 |