|
65 | 65 | echo'Testing for broken links'
|
66 | 66 | echo
|
67 | 67 | pushd"$BUILDROOT">/dev/null
|
68 |
| -tmpdir="$(mktemp -d)" |
69 |
| -python3 -m http.server 51296& sleep 1 |
70 |
| -trap'{ rm -r "$tmpdir"; kill %1; wait; } >/dev/null 2>&1' EXIT |
71 |
| -[!"$(jobs -p)" ]&& die'Server not running. See above.' |
72 |
| -find -name'*.html' -print0| |
73 |
| - sed --null-data's/^/http:\/\/127.0.0.1:51296\//'| |
74 |
| - xargs -0 -- \ |
75 |
| - wget --user-agent"Mozilla/5.0 Firefox 61" -e'robots=off' --random-wait \ |
76 |
| - --no-verbose --recursive --span-hosts --level=1 --tries=2 \ |
77 |
| - --directory-prefix"$tmpdir" --no-clobber \ |
78 |
| - --reject-regex='\bfonts\b|\.css\b|\bjs\b|\.png\b'|& |
79 |
| - grep -B1'ERROR 404' |
| 68 | +WEBSITE='https://kernc\.github\.io/backtesting\.py' |
| 69 | +grep -PR'<a .*?href='| |
| 70 | + sed -E"s/:.*?<a .*?href=([\"'])(.*?)/\t\2/g"| |
| 71 | + tr"\"'"'#'| |
| 72 | + cut -d'#' -f1| |
| 73 | + sort -u -t$'\t' -k 2| |
| 74 | + sort -u| |
| 75 | + python -c' |
| 76 | +import sys |
| 77 | +from urllib.parse import urljoin |
| 78 | +for line in sys.stdin.readlines(): |
| 79 | + base, url = line.split("\t") |
| 80 | + print(base, urljoin(base, url.strip()), sep="\t") |
| 81 | +'| |
| 82 | + sed"s,$WEBSITE/doc/,,"| |
| 83 | + grep -Pv"$WEBSITE"'/?$'| |
| 84 | + grep -v$'\t''$'| |
| 85 | +whileread -r line;do |
| 86 | +while IFS=$'\t'read -r file url;do |
| 87 | + [-f"$url" ]|| |
| 88 | + curl --silent --fail --retry 2 --user-agent'Mozilla/5.0 Firefox 61'"$url">/dev/null2>&1|| |
| 89 | + die"broken link in$file:$url" |
| 90 | +done |
| 91 | +done |
80 | 92 | popd>/dev/null
|
81 | 93 |
|
82 | 94 |
|
|