#!/usr/bin/env bash # ============================================================================ # validate_json.sh · OTO Enterprise OS DTP # ---------------------------------------------------------------------------- # Valide que tous les fichiers .json suivis sont bien formés (parse strict). # Les schémas JSON (version.schema.json, projets_master.schema.json) sont le # contrat de données Faisabilité ↔ Publiciste : un JSON cassé bloque le # pipeline en aval → on l'attrape ici. # Dépendances : bash, git, python3. Aucun réseau requis. # ============================================================================ set -uo pipefail cd "$(git rev-parse --show-toplevel)" FAIL=0 mapfile -t files < <(git ls-files '*.json') if [[ "${#files[@]}" -eq 0 ]]; then echo "Aucun fichier .json suivi — rien à valider." exit 0 fi for f in "${files[@]}"; do if python3 -c "import json,sys; json.load(open(sys.argv[1]))" "$f" 2>/tmp/jsonerr; then printf ' \033[32m✓\033[0m %s\n' "$f" # Si un $schema est déclaré, contrôle que 'draft' est reconnu (info seule). else printf ' \033[31m✗\033[0m %s\n' "$f" sed 's/^/ /' /tmp/jsonerr FAIL=1 fi done echo if [[ "$FAIL" -eq 0 ]]; then echo -e "\033[32m✅ Tous les JSON sont bien formés.\033[0m" else echo -e "\033[31m❌ JSON invalide détecté.\033[0m" fi exit "$FAIL"