#!/usr/bin/env bash # Vérifie la forme des ADR de docs/adr/ (voir l'ADR 0001) : # numérotation continue à partir de 0001, titre conforme au numéro, statut # valide, sections obligatoires, et présence de chaque ADR dans l'index. set -euo pipefail cd "$(dirname "$0")/../docs/adr" erreurs=0 signaler() { echo "$1" erreurs=$((erreurs + 1)) } attendu=1 for f in [0-9][0-9][0-9][0-9]-*.md; do num="${f%%-*}" if [ "$((10#$num))" -ne "$attendu" ]; then signaler "$f : numéro attendu $(printf '%04d' "$attendu")" fi attendu=$((10#$num + 1)) head -n1 "$f" | grep -qE "^# $num\. " \ || signaler "$f : la première ligne doit être « # $num. Titre »" grep -qE '^- \*\*Statut\*\* : (proposé|accepté|remplacé par [0-9]{4}|obsolète)$' "$f" \ || signaler "$f : statut absent ou invalide" grep -qE '^- \*\*Date\*\* : [0-9]{4}-[0-9]{2}-[0-9]{2}$' "$f" \ || signaler "$f : date absente ou invalide" for section in Contexte Décision "Alternatives écartées" Conséquences; do grep -qx "## $section" "$f" || signaler "$f : section « $section » absente" done grep -qF "]($f)" README.md || signaler "$f : absent de l'index docs/adr/README.md" done [ "$attendu" -gt 1 ] || signaler "aucun ADR trouvé" [ "$erreurs" -eq 0 ]