diff options
Diffstat (limited to 'tools/checkrtd.sh')
-rwxr-xr-x | tools/checkrtd.sh | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/tools/checkrtd.sh b/tools/checkrtd.sh new file mode 100755 index 000000000..e626dd9c1 --- /dev/null +++ b/tools/checkrtd.sh @@ -0,0 +1,86 @@ +#!/bin/bash +#set -x # uncomment for bash script debugging + +# branch, e.g. "master" or "guilin" +branch=$1 +# logfile produced by checkdocs that contains the list of links +file_to_process=$2 + +# +# NOTE: works NOT with elalto release and below because of the submodule structure used for documentation +# + +# url +# important! only doc project needs a different url base +url_lang="en" +url_branch=${branch} +unique=$(date +%s) + +# "master" branch documentation is available as "latest" in RTD +if [[ ${url_branch} == "master" ]]; then + url_branch="latest" +fi + +#readarray -t array < ./${branch}_releasenotes.log; +readarray -t array < ${file_to_process}; +for line in "${array[@]}" +do + + reponame=$(echo ${line} | cut -d "[" -f2 | cut -d "]" -f1) + #reponame="[${reponame}]" + #echo "DBUG: reponame=${reponame}" + + # example line: [dmaap/messagerouter/messageservice]/docs/release-notes/release-notes.rst + # example url: https://docs.onap.org/projects/onap-dmaap-messagerouter-messageservice/en/frankfurt/release-notes/release-notes.html + + # extract repo name which comes in square bracktes ([...]) and convert slash (/) to minus (-) + # line: [dmaap/messagerouter/messageservice]/docs/release-notes/release-notes.rst + # output: dmaap-messagerouter-messageservice + url_repo=$(echo ${line} | sed -r 's/].+$//' | sed -r 's/\[//' | sed -r 's/\//-/g') + + # extract rst filename and its path; replace .rst ending with .html + # warning: path does not always contain "docs"! + # line: [dmaap/messagerouter/messageservice]/docs/release-notes/release-notes.rst + # output: release-notes/release-notes.html + url_file=$(echo ${line} | sed -r 's/^.+\]//' | sed -r 's/^.*\/docs\///' | sed -r 's/\.rst$/\.html/' ) + + #echo "DBUG: line = ${line}" + #echo "DBUG: url_file = ${url_file}" + #echo "DBUG: url_repo = ${url_repo}" + #echo "DBUG: reponame = ${reponame}" + + # build the full url + if [[ ${reponame} == "doc" ]]; then + # build the full url for the doc project + url_start="https://docs.onap.org" + url="${url_start}/${url_lang}/${url_branch}/${url_file}" + else + # build the full url for the other projects + url_start="https://docs.onap.org/projects/onap" + url="${url_start}-${url_repo}/${url_lang}/${url_branch}/${url_file}" + fi + + #echo "DBUG: url = $url" + + # check with curl if html page is accessible (no content check!) + # to prevent (server side) cached results a unique element is added to the request + curl --head --silent --fail "${url}?${unique}" >/dev/null + curl_result=$? + + # "0" and "22" are expected as a curl result + if [ "${curl_result}" = "0" ]; then + curl_result="accessible" + elif [ "${curl_result}" = "22" ]; then + curl_result="does not exist" + fi + + #echo -e "DBUG: ${line}" + #echo -e "DBUG: ${curl_result} ${url}" + #echo " " + + echo "${line},${url},${curl_result}" + + ((i++)) +done +unset array +unset i |