31 lines
819 B
Bash
Executable File
31 lines
819 B
Bash
Executable File
#!/bin/bash
|
|
# json_dir_validator.sh - Validate all JSON files in a directory
|
|
# Usage: ./json_dir_validator.sh [directory]
|
|
# Returns: exit 0 if all valid JSON, exit 1 if any invalid, lists problems
|
|
|
|
dir="${1:-.}"
|
|
|
|
if [[ ! -d "$dir" ]]; then
|
|
echo "ERROR: '$dir' is not a directory" >&2
|
|
exit 2
|
|
fi
|
|
|
|
invalid_count=0
|
|
valid_count=0
|
|
|
|
while IFS= read -r -d '' file; do
|
|
if python3 -c "import json; json.load(open('$file'))" 2>/dev/null; then
|
|
valid_count=$((valid_count + 1))
|
|
else
|
|
echo "INVALID: $file"
|
|
invalid_count=$((invalid_count + 1))
|
|
fi
|
|
done < <(find "$dir" -name '*.json' -type f -print0 2>/dev/null)
|
|
|
|
if [[ $invalid_count -gt 0 ]]; then
|
|
echo "FAILED: $invalid_count invalid JSON files found"
|
|
exit 1
|
|
else
|
|
echo "OK: All $valid_count JSON files are valid"
|
|
exit 0
|
|
fi |