1212# The general workflow is to first run the script and then check the non-working links by searching the occurrence
1313# within the codebase and verifying that they are indeed broken.
1414
15+ COUNT=0
1516do_check ()
1617{
17- RESPONSE=$( curl --http2 -Is -A ' Mozilla/5.0' $1 ) # HTTP2 is the default.
18- if ! [[ " $RESPONSE " =~ ^HTTP.* ]]; then # If this does not work,
19- RESPONSE=$( curl --http1.1 -Is -A ' Mozilla/5.0' $1 ) # fall back to HTTP1.1.
18+ (( COUNT++ ))
19+ RESPONSE=$( curl --http2 -Is -A ' Mozilla/5.0' " $1 " ) # HTTP2 is the default.
20+ if ! [[ " ${RESPONSE} " =~ ^HTTP.* ]]; then # If this does not work,
21+ RESPONSE=$( curl --http1.1 -Is -A ' Mozilla/5.0' " $1 " ) # fall back to HTTP1.1.
2022 fi
2123
22- HEADER=($( echo $ RESPONSE | head -1) ); # May look like: HTTP/2 200
24+ HEADER=($( echo " ${ RESPONSE} " | head -1) ); # May look like: HTTP/2 200
2325 STATUS=${HEADER[1]}
26+ echo -n " [${COUNT} ] "
2427 case " $STATUS " in
25- 200) echo " Link OK :" $1 ;;
26- 301) echo " Link PERM MOVED :" $1 ;;
27- 302) echo " Link TEMP MOVED :" $1 ;;
28- 404) echo " Link BROKE :" $1 ;;
29- 429) sleep 5; do_check $1 ;;
30- * ) echo " Link STATUS" $ STATUS " : " $1 ;;
28+ 200) echo " Link OK : $1 " ;;
29+ 301) echo " Link PERM MOVED : $1 " ;;
30+ 302) echo " Link TEMP MOVED : $1 " ;;
31+ 404) echo " Link BROKE : $1 " ;;
32+ 429) sleep 5; do_check " $1 " ;;
33+ * ) echo " Link STATUS ${ STATUS} : $1 " ;;
3134 esac
3235}
3336
34- if [[ $# -ne 1 ]]; then
35- echo " Usage: link_check.sh <Sharg root directory>"
37+ if [[ $# -ne 1 ]] && [[ $# -ne 2 ]] ; then
38+ echo " Usage: link_check.sh <Sharg root directory> <Skip first n=0 entries> "
3639 exit 1
3740fi
3841
@@ -47,7 +50,10 @@ if [[ ! -f $1/include/sharg/version.hpp ]]; then
4750 exit 1
4851fi
4952
50- for URL in $( grep -ohr --exclude-dir={.git,submodules,build} " https*://[a-zA-Z0-9./#+?=_%:-]*[a-zA-Z0-9/#+?=_%:-]" $1 | sort | uniq)
53+ SKIP=" ${2:- 0} "
54+ COUNT=$(( COUNT + SKIP))
55+
56+ for URL in $( grep -ohr --exclude-dir={.git,.vscode,build} " https*://[a-zA-Z0-9./#+?=_%:-]*[a-zA-Z0-9/#+?=_%:-]" " $1 " | sort | uniq | tail -n +" ${SKIP} " )
5157do
52- do_check $ URL
58+ do_check " ${ URL} "
5359done
0 commit comments