validate_json.py 661 B

12345678910111213141516171819202122232425262728
  1. #!/usr/bin/env python3
  2. import re
  3. import sys
  4. from pathlib import Path
  5. from pprint import pprint
  6. # VCMI supports JSON with comments, but not JSON5
  7. import jstyleson
  8. validation_failed = False
  9. for path in sorted(Path(".").glob("**/*.json"), key=lambda path: str(path).lower()):
  10. # because path is an object and not a string
  11. path_str = str(path)
  12. if path_str.startswith("."):
  13. continue
  14. try:
  15. with open(path_str, "r") as file:
  16. jstyleson.load(file)
  17. print(f"✅ {path_str}")
  18. except Exception as exc:
  19. print(f"❌ {path_str}: {exc}")
  20. validation_failed = True
  21. if validation_failed:
  22. sys.exit(1)