Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-04-17 07:46:50

0001 #!/usr/bin/env bash
0002 set -euo pipefail
0003 
0004 SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
0005 REPO_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
0006 
0007 LINKCHECK_IGNORE_REPO="${LINKCHECK_IGNORE_REPO:-acts-project/linkcheck-ignore}"
0008 LINKCHECK_IGNORE_REF="${LINKCHECK_IGNORE_REF:-main}"
0009 LINKCHECK_IGNORE_PATH="${LINKCHECK_IGNORE_PATH:-data.json}"
0010 LINKCHECK_IGNORE_URL="${LINKCHECK_IGNORE_URL:-https://raw.githubusercontent.com/${LINKCHECK_IGNORE_REPO}/${LINKCHECK_IGNORE_REF}/${LINKCHECK_IGNORE_PATH}}"
0011 LINKCHECK_THREADS="${LINKCHECK_THREADS:-4}"
0012 LINKCHECK_TIMEOUT="${LINKCHECK_TIMEOUT:-20}"
0013 
0014 if [[ -n "${LINKCHECK_START_URL:-}" ]]; then
0015   START_URL="${LINKCHECK_START_URL}"
0016 else
0017   LINKCHECK_START_PATH="${LINKCHECK_START_PATH:-${REPO_ROOT}/build/docs/html/index.html}"
0018   START_URL="${LINKCHECK_START_PATH}"
0019 fi
0020 
0021 if command -v gh >/dev/null 2>&1; then
0022   if IGNORE_JSON="$(
0023     gh api \
0024       -H "Accept: application/vnd.github.raw" \
0025       "/repos/${LINKCHECK_IGNORE_REPO}/contents/${LINKCHECK_IGNORE_PATH}?ref=${LINKCHECK_IGNORE_REF}" \
0026       2>/dev/null
0027   )"; then
0028     echo "Loaded ignore list via gh api from ${LINKCHECK_IGNORE_REPO}@${LINKCHECK_IGNORE_REF}:${LINKCHECK_IGNORE_PATH}"
0029   else
0030     echo "gh api failed, falling back to curl from ${LINKCHECK_IGNORE_URL}"
0031     IGNORE_JSON="$(curl -fsSL "${LINKCHECK_IGNORE_URL}")"
0032   fi
0033 else
0034   IGNORE_JSON="$(curl -fsSL "${LINKCHECK_IGNORE_URL}")"
0035 fi
0036 jq -e 'type == "array" and all(.[]; type == "string")' <<<"${IGNORE_JSON}" >/dev/null
0037 mapfile -t IGNORE_PATTERNS < <(jq -r '.[]' <<<"${IGNORE_JSON}")
0038 
0039 IGNORE_ARGS=(--ignore-url='^mailto:')
0040 for pattern in "${IGNORE_PATTERNS[@]}"; do
0041   IGNORE_ARGS+=(--ignore-url="${pattern}")
0042 done
0043 
0044 echo "Loaded ${#IGNORE_PATTERNS[@]} external link ignore patterns"
0045 
0046 uvx --from LinkChecker linkchecker \
0047   --config="${SCRIPT_DIR}/linkcheckerrc" \
0048   --check-extern \
0049   --threads="${LINKCHECK_THREADS}" \
0050   --timeout="${LINKCHECK_TIMEOUT}" \
0051   "${IGNORE_ARGS[@]}" \
0052   "${START_URL}"