#!/usr/bin/env bash # Vérifie les fiches du glossaire (docs/glossaire/, ADR 0008) : # en-tête avec term et english, titre identique au terme, ligne « En bref », # traductions anglaises uniques, chaque fiche présente dans l'index, # liens « Voir aussi » vers des fiches existantes. set -euo pipefail cd "$(dirname "$0")/../docs/glossaire" errors=0 report() { echo "$1" errors=$((errors + 1)) } for f in *.md; do [ "$f" = README.md ] && continue [ "$(sed -n 1p "$f")" = "---" ] || report "$f : l'en-tête doit commencer par ---" term="$(sed -n 's/^term: //p' "$f")" english="$(sed -n 's/^english: //p' "$f")" [ -n "$term" ] || report "$f : champ term absent" [ -n "$english" ] || report "$f : champ english absent" grep -qx "# $term" "$f" || report "$f : le titre doit être « # $term »" grep -qE '^\*\*En bref\*\* : .+' "$f" || report "$f : ligne « **En bref** : » absente" grep -qF "]($f)" README.md || report "$f : absent de l'index README.md" while IFS= read -r link; do [ -f "$link" ] || report "$f : lien vers une fiche inexistante ($link)" done < <(grep -oE '\]\([^)]+\.md\)' "$f" | sed -E 's/^\]\((.*)\)$/\1/' || true) done duplicates="$(find . -name '*.md' ! -name README.md -exec sed -n 's/^english: //p' {} + | sort | uniq -d)" [ -z "$duplicates" ] || report "traductions anglaises en double : $duplicates" [ "$errors" -eq 0 ]