blob: e5184839be02f1e31451755583802b50ecb81757 [file] [log] [blame]
#!/usr/bin/env bash
set -e
set -o pipefail
LINKCHECK_BINARY=mdbook-linkcheck2
set_github_token() {
jq '.config.output.linkcheck."http-headers"."github\\.com" = ["Authorization: Bearer $GITHUB_TOKEN"]'
}
if [ -z "$ENABLE_LINKCHECK" ] ; then
echo "Skipping link check."
exit 0
fi
# https://docs.github.com/en/actions/reference/environment-variables
if [ "$GITHUB_EVENT_NAME" = "schedule" ] ; then # running in scheduled job
FLAGS=""
USE_TOKEN=1
echo "Doing full link check."
elif [ "$GITHUB_EVENT_NAME" = "pull_request" ] ; then # running in PR CI build
if [ -z "$BASE_SHA" ]; then
echo "error: unexpected state: BASE_SHA must be non-empty in CI"
exit 1
fi
CHANGED_FILES=$(git diff --name-only $BASE_SHA... | sed 's#^src/##' | tr '\n' ' ')
FLAGS="--no-cache -f $CHANGED_FILES"
USE_TOKEN=1
echo "Checking files changed since $BASE_SHA: $CHANGED_FILES"
else # running locally
COMMIT_RANGE=master...
CHANGED_FILES=$(git diff --name-only $COMMIT_RANGE | sed 's#^src/##' | tr '\n' ' ')
FLAGS="-f $CHANGED_FILES"
echo "Checking files changed in $COMMIT_RANGE: $CHANGED_FILES"
fi
echo "exec $LINKCHECK_BINARY $FLAGS"
if [ "$USE_TOKEN" = 1 ]; then
config=$(set_github_token)
exec $LINKCHECK_BINARY $FLAGS <<<"$config"
else
exec $LINKCHECK_BINARY $FLAGS
fi