37 lines
1.3 KiB
Bash
Executable File
37 lines
1.3 KiB
Bash
Executable File
#!/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 ]
|