Maintenance: Github workflow URL checker (#179)
* Remove non needed spell checks
* FreeRTOS Kernel Spelling Update (#170)
* FreeRTOS Kernel Spelling Update
* Added spell check to kernel repository.
* Fixed small spelling errors in various kernel source files.
* Added documentation for spellcheck.
Note: Only kernel files are checked for spelling, and portable files are ignored.
* Fix exit 0
* Remove spell
* add echo
* Call script from ci
* Fix script location
* Print pwd
* Fix script
* Fix script
* Remove some lines from script
* uncomment lines and fix exit
* use bash instead of sh
* Move url checker to the action directory
* Separate spell and url checkers
* Fix bad merge from master
* Fix yml file error
* Add another step to the url checker
Co-authored-by: Carl Lundin <53273776+lundinc2@users.noreply.github.com>
diff --git a/.github/actions/url_verifier.sh b/.github/actions/url_verifier.sh
new file mode 100755
index 0000000..4e9575a
--- /dev/null
+++ b/.github/actions/url_verifier.sh
@@ -0,0 +1,59 @@
+#!/bin/bash -
+
+PROJECT=$1
+echo "Verifying url links of: ${PROJECT}"
+if [ ! -d "$PROJECT" ]
+then
+ echo "Directory passed does not exist"
+ exit 2
+fi
+
+SCRIPT_RET=0
+
+set -o nounset # Treat unset variables as an error
+
+declare -A dict
+
+function test {
+ while IFS= read -r LINE; do
+ FILE=$(echo $LINE | cut -f 1 -d ':')
+ URL=$(echo $LINE | grep -IoE '\b(https?|ftp|file)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]*[-A-Za-z0-9+&@#/%=~_|]')
+
+ # remove trailing / if it exists curl diferenciate between links with
+ # and without / at the end
+ # URL=`echo "$URL" | sed 's,/$,,'`
+ dict+=(["$URL"]="$FILE ")
+ done < <(grep -e 'https\?://' ${PROJECT} -RIa --exclude='*.exe' --exclude-dir=.git | tr '*' ' ')
+
+ for UNIQ_URL in ${!dict[@]} # loop urls
+ do
+ CURL_RES=$(curl -I ${UNIQ_URL} 2>/dev/null| head -n 1 | cut -f 2 -d ' ')
+ RES=$?
+
+ if [ "${CURL_RES}" == '' -o "${CURL_RES}" != '200' ]
+ then
+ echo "URL is: ${UNIQ_URL}"
+ echo "File names: ${dict[$UNIQ_URL]}"
+ if [ "${CURL_RES}" == '' ] # curl returned an error
+ then
+ CURL_RES=$RES
+ SCRIPT_RET=1
+ elif [ "${CURL_RES}" == '403' ]
+ then
+ SCRIPT_RET=1
+ fi
+ echo Result is: "${CURL_RES}"
+ echo "================================="
+ fi
+ done
+
+ if [ "${SCRIPT_RET}" -eq 0 ]
+ then
+ exit 0
+ else
+ exit 1
+ fi
+}
+
+test
+
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index f6b62a9..593c384 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -34,4 +34,13 @@
else
exit 1
fi
-
+ url-check:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Clone This Repo
+ uses: actions/checkout@v2
+ with:
+ path: ./kernel
+ - name: URL Checker
+ run: |
+ bash kernel/.github/actions/url_verifier.sh kernel