/
ievlev
/
TOP-AI
Обзор
Документация
Войти
/
ievlev
/
TOP-AI
Код
Запросы
1
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
scripts/check-links.sh
37 строк
1 KB
KIevlev
stands: зафиксировать контракт стендов, генераторов данных и проверок
27 июл 2026, 21:23
27 июл 2026, 21:23
74b8d87
Код
Авторство
О чём код?
#!/usr/bin/env bash # Проверка относительных ссылок во всех Markdown-файлах репозитория. # Внешние ссылки (http/https/mailto) и якоря не проверяются. # Код возврата 1, если найдена хотя бы одна битая ссылка. set -uo pipefail cd "$(dirname "$0")/.." broken=0 checked=0 while IFS= read -r file; do dir=$(dirname "$file") # Извлекаем цели ссылок вида [текст](цель) while IFS= read -r target; do [[ -z "$target" ]] && continue # Пропускаем внешние ссылки и чистые якоря case "$target" in http://*|https://*|mailto:*|\#*) continue ;; esac # Отрезаем якорь path="${target%%#*}" [[ -z "$path" ]] && continue # Декодируем %20 в пробелы path="${path//%20/ }" checked=$((checked+1)) if [[ ! -e "$dir/$path" ]]; then echo "БИТАЯ ССЫЛКА $file -> $target" broken=$((broken+1)) fi done < <(grep -oE '\]\([^)]+\)' "$file" | sed -E 's/^\]\(//; s/\)$//') done < <(find . -name '*.md' -not -path './.git/*') echo echo "Проверено ссылок: $checked, битых: $broken" [[ "$broken" -eq 0 ]] || exit 1