Files
static-site-pipeline/linkcheck.sh
2023-10-01 16:55:13 +01:00

38 lines
710 B
Bash

#!/bin/bash
bad=0
LYNX=$1
evaluate_file() {
target=$1
links=$("$LYNX" -dump --listonly -image_links --nonumbers -hiddenlinks=listonly "$target" | awk '
/Visible links/ {
found=1
next
}
found { print }
' | grep 'file:' | cut -d '/' -f 3- | grep -v '#')
# hurr durrr accidentally quadratic
for link in $links; do
filename=".$link"
if [ -d "$filename" ]; then
filename="$filename/index.html"
fi
if ! [ -e "$filename" ]; then
echo "File does not exist, while parsing '$target': $filename" >&2
bad=1
fi
done
}
while IFS= read -d '' -u3 -r file; do
evaluate_file "$file"
done 3< <(find . -type f -name '*.html' -print0)
if [ $bad -eq 1 ]; then
exit $bad
fi