From 192ebaad900762d5b276e8c792ff742691b6a101 Mon Sep 17 00:00:00 2001
From: Jan Frenzel <jan.frenzel@tu-dresden.de>
Date: Thu, 25 Nov 2021 16:07:32 +0100
Subject: [PATCH] Added check for multiple includes in check-no-floating.sh.

---
 .../util/check-no-floating.sh                 | 36 +++++++++++++------
 1 file changed, 25 insertions(+), 11 deletions(-)

diff --git a/doc.zih.tu-dresden.de/util/check-no-floating.sh b/doc.zih.tu-dresden.de/util/check-no-floating.sh
index 6f94039f3..af09c72ec 100755
--- a/doc.zih.tu-dresden.de/util/check-no-floating.sh
+++ b/doc.zih.tu-dresden.de/util/check-no-floating.sh
@@ -4,30 +4,44 @@ if [ ${#} -ne 1 ]; then
   echo "Usage: ${0} <path>"
 fi
 
-DOCUMENT_ROOT=${1}
+export DOCUMENT_ROOT=${1}
+export maxDepth=4
+export expectedFooter="$DOCUMENT_ROOT/docs/legal_notice.md $DOCUMENT_ROOT/docs/accessibility.md $DOCUMENT_ROOT/docs/data_protection_declaration.md"
 
 check_md() {
-  awk -F'/' '{print $0,NF,$NF}' <<< "${1}" | while IFS=' ' read string depth md; do
-    #echo "string=${string} depth=${depth} md=${md}"
+  awk -F'/' '{print $0,NF}' <<< "${1}" | while IFS=' ' read string depth; do
+    #echo "string=${string} depth=${depth}"
 
     # max depth check 
-    if [ "${depth}" -gt "5" ]; then
-      echo "max depth (4) exceeded for ${string}"
-      exit -1
+    if [ "${depth}" -gt $maxDepth ]; then
+      echo "max depth ($maxDepth) exceeded for ${string}"
     fi
 
+    md=${string#${DOCUMENT_ROOT}/docs/}
+
     # md included in nav 
-    if ! sed -n '/nav:/,/^$/p' ${2}/mkdocs.yml | grep --quiet ${md}; then
-      echo "${md} is not included in nav"
-      exit -1
+    numberOfReferences=`sed -n '/nav:/,/^$/p' ${DOCUMENT_ROOT}/mkdocs.yml | grep -c ${md}`
+    if [ $numberOfReferences -eq 0 ]; then
+      # fallback: md included in footer 
+      if [[ "${expectedFooter}" =~ ${string} ]]; then
+        numberOfReferencesInFooter=`sed -n '/footer:/,/^$/p' ${DOCUMENT_ROOT}/mkdocs.yml | grep -c /${md%.md}`
+        if [ $numberOfReferencesInFooter -eq 0 ]; then
+          echo "${md} is not included in footer"
+        elif [ $numberOfReferencesInFooter -ne 1 ]; then
+          echo "${md} is included $numberOfReferencesInFooter times in footer"
+        fi
+      else
+        echo "${md} is not included in nav"
+      fi
+    elif [ $numberOfReferences -ne 1 ]; then
+      echo "${md} is included $numberOfReferences times in nav"
     fi
   done
 }
 
 export -f check_md
 
-#find ${DOCUMENT_ROOT}/docs -name "*.md" -exec bash -c 'check_md "${0#${1}}" "${1}"' {} ${DOCUMENT_ROOT} \; 
-MSG=$(find ${DOCUMENT_ROOT}/docs -name "*.md" -exec bash -c 'check_md "${0#${1}}" "${1}"' {} ${DOCUMENT_ROOT} \;)
+MSG=$(find ${DOCUMENT_ROOT}/docs -name "*.md" -exec bash -c 'check_md "${0}"' {} \;)
 if [ ! -z "${MSG}" ]; then
   echo "${MSG}"
   exit -1
-- 
GitLab