41 lines
1.1 KiB
Bash
41 lines
1.1 KiB
Bash
|
#!/bin/bash
|
||
|
|
||
|
# Temporaire pour les résultats des liens brisés
|
||
|
BROKEN_LINKS=$(mktemp)
|
||
|
|
||
|
# Fonction pour vérifier les liens
|
||
|
check_links() {
|
||
|
local file=$1
|
||
|
local base_dir=$(dirname "$file")
|
||
|
|
||
|
# Cherche les liens vers les fichiers .md
|
||
|
grep -o '\[.*\](.*\.md)' "$file" | while read -r link; do
|
||
|
# Extraire le chemin du fichier lié
|
||
|
linked_file=$(echo "$link" | sed 's/^.*(\(.*\))$/\1/')
|
||
|
|
||
|
# Résoudre le chemin relatif
|
||
|
resolved_path=$(realpath -m "$base_dir/$linked_file")
|
||
|
|
||
|
# Vérifie si le fichier lié existe
|
||
|
if [ ! -f "$resolved_path" ]; then
|
||
|
echo "Lien brisé dans $file: $linked_file (résolu en $resolved_path)" >> "$BROKEN_LINKS"
|
||
|
fi
|
||
|
done
|
||
|
}
|
||
|
|
||
|
# Répertorie tous les fichiers .md dans le dépôt
|
||
|
find . -type f -name "*.md" ! -name "README.md" | while read -r file; do
|
||
|
check_links "$file"
|
||
|
done
|
||
|
|
||
|
# Affiche les liens brisés
|
||
|
if [ -s "$BROKEN_LINKS" ]; then
|
||
|
echo "Les liens brisés suivants ont été trouvés :"
|
||
|
cat "$BROKEN_LINKS"
|
||
|
else
|
||
|
echo "Aucun lien brisé trouvé."
|
||
|
fi
|
||
|
|
||
|
# Nettoyage
|
||
|
rm "$BROKEN_LINKS"
|