Files
pytorch/scripts/lint_xrefs.sh
Anthony Shoumikhin 3c0b93afc5 Re-enable link linter (#153280)
And make URL linter always succeed for now.
I'll monitor the logs manually and experiment with it futher.

Pull Request resolved: https://github.com/pytorch/pytorch/pull/153280
Approved by: https://github.com/albanD
2025-05-23 20:56:25 +00:00

54 lines
1.5 KiB
Bash
Executable File

#!/bin/bash
set -euo pipefail
status=0
green='\e[1;32m'; red='\e[1;31m'; cyan='\e[1;36m'; yellow='\e[1;33m'; reset='\e[0m'
last_filepath=
while IFS=: read -r filepath link; do
if [ "$filepath" != "$last_filepath" ]; then
printf '\n%s:\n' "$filepath"
last_filepath=$filepath
fi
if [ -e "$(dirname "$filepath")/${link%%#*}" ]; then
printf " ${green}OK${reset} ${cyan}%s${reset}\n" "$link"
else
printf "${red}FAIL${reset} ${yellow}%s${reset}\n" "$link" >&2
status=1
fi
done < <(
pattern='(?!.*@lint-ignore)(?:\[[^]]+\]\([^[:space:]\)]+/[^[:space:]\)]+\)|href="[^"]*/[^"]*"|src="[^"]*/[^"]*")'
excludes=(
':(exclude,glob)**/.*'
':(exclude,glob)**/*.lock'
':(exclude,glob)**/*.svg'
':(exclude,glob)**/*.xml'
':(exclude,glob)**/*.gradle*'
':(exclude,glob)**/*gradle*'
':(exclude,glob)**/third-party/**'
':(exclude,glob)**/third_party/**'
)
if [ $# -eq 2 ]; then
for filename in $(git diff --name-only --unified=0 "$1...$2"); do
git diff --unified=0 "$1...$2" -- "$filename" "${excludes[@]}" \
| grep -E '^\+' \
| grep -Ev '^\+\+\+' \
| perl -nle 'print for m#'"$pattern"'#g' \
| sed 's|^|'"$filename"':|'
done
else
git --no-pager grep --no-color -I -P -o "$pattern" -- . "${excludes[@]}"
fi \
| grep -Ev 'https?://' \
| sed -E \
-e 's#([^:]+):\[[^]]+\]\(([^)]+)\)#\1:\2#' \
-e 's#([^:]+):href="([^"]+)"#\1:\2#' \
-e 's#([^:]+):src="([^"]+)"#\1:\2#' \
-e 's/[[:punct:]]*$//' \
| grep -Ev '\{\{' \
|| true
)
exit $status