notes-techniques/check_links.sh

41 lines
1.1 KiB
Bash
Raw Permalink Normal View History

2024-07-24 03:02:25 +02:00
#!/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"