Files
anonymisation/tools/validate_admin_rules.py

56 lines
1.6 KiB
Python

#!/usr/bin/env python3
"""Validation semantique des regles d'administration."""
from __future__ import annotations
import argparse
from pathlib import Path
import sys
ROOT = Path(__file__).resolve().parents[1]
if str(ROOT) not in sys.path:
sys.path.insert(0, str(ROOT))
from admin_rules import generate_rule_variants, load_effective_admin_rules_dict, validate_rules_config
def main() -> int:
parser = argparse.ArgumentParser(description="Valider les regles d'administration")
parser.add_argument(
"--config",
default="config/admin_rules.default.yml",
help="Chemin vers le fichier YAML a valider.",
)
parser.add_argument(
"--show-variants",
action="store_true",
help="Afficher un apercu des variantes generees pour les regles de type identifiant.",
)
args = parser.parse_args()
config_path = Path(args.config)
data = load_effective_admin_rules_dict(config_path)
errors = validate_rules_config(data)
if errors:
print("Configuration invalide:")
for error in errors:
print(f"- {error}")
return 1
rules = data.get("rules", [])
print(f"Configuration valide: {config_path} ({len(rules)} regle(s))")
for rule in rules:
print(f"- {rule['id']} [{rule['status']}] {rule['type']}")
if args.show_variants:
variants = generate_rule_variants(rule)
if variants:
print(" Variantes:")
for value in variants:
print(f" - {value}")
return 0
if __name__ == "__main__":
raise SystemExit(main())