diff --git a/wizard-work/spark/quick-json-validator.py b/wizard-work/spark/quick-json-validator.py new file mode 100644 index 0000000..d84151a --- /dev/null +++ b/wizard-work/spark/quick-json-validator.py @@ -0,0 +1,57 @@ +#!/usr/bin/env python3 +"""quick-json-validator.py - Validate JSON files in a directory. + +Usage: python quick-json-validator.py +Exit 0 if all files valid, 1 if any invalid. +""" + +import json +import sys +from pathlib import Path + + +def validate_json_files(directory: str): + """Validate all .json files in the given directory.""" + dir_path = Path(directory) + + if not dir_path.exists(): + print(f"Error: Directory '{directory}' does not exist") + return 1 + + if not dir_path.is_dir(): + print(f"Error: '{directory}' is not a directory") + return 1 + + json_files = list(dir_path.glob('*.json')) + + if not json_files: + print(f"No .json files found in '{directory}'") + return 0 + + errors = [] + for json_file in json_files: + try: + with open(json_file, 'r') as f: + json.load(f) + print(f"[OK] {json_file.name}") + except json.JSONDecodeError as e: + errors.append((json_file, e)) + print(f"[FAIL] {json_file.name}: {e}") + except Exception as e: + errors.append((json_file, e)) + print(f"[ERROR] {json_file.name}: {e}") + + if errors: + print(f"\nFound {len(errors)} invalid file(s)") + return 1 + + print(f"\nAll {len(json_files)} file(s) valid") + return 0 + + +if __name__ == '__main__': + if len(sys.argv) != 2: + print(__doc__) + sys.exit(1) + + sys.exit(validate_json_files(sys.argv[1])) \ No newline at end of file