#!/usr/bin/env bash # Keep required jobs alive; only skip reviewed non-runtime documentation paths. set -euo pipefail base="${DELIVERY_BASE:-}" head="$(git rev-parse HEAD)" run=true if [[ "${DELIVERY_REF:-}" != refs/tags/* && "$head" == "${DELIVERY_SHA:-}" && "${DELIVERY_EVENT:-}" =~ ^(push|pull_request)$ && "$base" =~ ^[0-9a-f]{40}$ && "$base" != 0000000000000000000000000000000000000000 ]]; then if ! git cat-file -e "$base^{commit}" 2>/dev/null; then if [[ -n "${DELIVERY_FETCH_TOKEN:-}" ]]; then git -c "http.extraHeader=Authorization: token ${DELIVERY_FETCH_TOKEN}" fetch --quiet --depth=1 origin "$base" >/dev/null 2>&1 || true else git fetch --quiet --depth=1 origin "$base" >/dev/null 2>&1 || true fi fi if git cat-file -e "$base^{commit}" 2>/dev/null; then paths="$(mktemp)" trap 'rm -f -- "$paths"' EXIT # Snapshot comparison is conservative when main advanced during a PR. # Both rename sides remain visible, including names containing newlines. if git diff --no-renames --name-only -z "$base" "$head" > "$paths"; then run=false while IFS= read -r -d '' path; do case "$path" in README.md|CHANGELOG.md|LICENSE|LICENSE.md) ;; *) run=true; break ;; esac done < "$paths" fi fi fi if [[ "$run" == false ]]; then echo 'Only reviewed non-runtime documentation changed; build and validation are not applicable.' else echo 'Runtime, unknown inputs, or unavailable event history: run required validation.' fi if [[ -n "${GITHUB_OUTPUT:-}" ]]; then echo "run=$run" >> "$GITHUB_OUTPUT" fi printf '%s\n' "$run"