#!/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