#!/usr/bin/env python3 import sys,yaml,glob out=sys.argv[1] patterns=["monitoring/prometheus/rules/**/*.yml","monitoring/prometheus/rules/**/*.yaml","**/prometheus/rules/**/*.yml","**/prometheus/rules/**/*.yaml"] files=sorted({f for p in patterns for f in glob.glob(p,recursive=True)}) lines=["# Prometheus Rules","", "| File | Group | Alert | Expr | For | Labels | Annotations |","|---|---|---|---|---|---|---|"] if not files: open(out,'w').write("# Prometheus Rules\n\nNo Prometheus rule files were found.\n"); sys.exit(0) for fp in files: try:data=yaml.safe_load(open(fp)) or {} except Exception as e: raise SystemExit(f"Malformed YAML in {fp}: {e}") for g in data.get('groups',[]) or []: for r in g.get('rules',[]) or []: lines.append(f"| {fp} | {g.get('name','')} | {r.get('alert','')} | {str(r.get('expr','')).replace('|','\\|')} | {r.get('for','')} | {r.get('labels',{})} | {r.get('annotations',{})} |") open(out,'w').write('\n'.join(lines)+'\n')