#!/usr/bin/env bash set -euo pipefail SUITE_PATH="${1:-}" PAGES_HOST="${2:-}" GIT_PAGES_PUBLISH_URL="${3:-}" GIT_PAGES_PUBLISH_TOKEN="${4:-}" GIT_PAGES_PUBLISH_USER="${5:-publish}" REPO_SLUG="${GITHUB_REPOSITORY:-}" [ -n "$SUITE_PATH" ] || { echo "ERROR: suite_path argument required" >&2; exit 1; } [ -n "$PAGES_HOST" ] || { echo "ERROR: pages_host argument is required" >&2; exit 1; } [ -n "$GIT_PAGES_PUBLISH_URL" ] || { echo "ERROR: publish_url argument is required" >&2; exit 1; } [ -n "$GIT_PAGES_PUBLISH_TOKEN" ] || { echo "ERROR: publish_token argument is required" >&2; exit 1; } [ -n "$REPO_SLUG" ] || { echo "ERROR: GITHUB_REPOSITORY is not set" >&2; exit 1; } [ -n "${GITHUB_SHA:-}" ] || { echo "ERROR: GITHUB_SHA is not set" >&2; exit 1; } OWNER="${REPO_SLUG%%/*}" REPO="${REPO_SLUG##*/}" SHA8="${GITHUB_SHA:0:8}" REPORT_DIR="reports/${SHA8}/${SUITE_PATH}" REPORT_BASE="https://${PAGES_HOST}/${OWNER}/${REPO}/reports/${SHA8}" [ -d "$REPORT_DIR" ] || { echo "ERROR: not a directory: $REPORT_DIR" >&2; exit 1; } PUBLISH_BASE="${GIT_PAGES_PUBLISH_URL%/}" PUBLISH_SITE_URL="${PUBLISH_BASE}/" WORK=$(mktemp -d) TAR=$(mktemp) trap 'rm -rf "$WORK" "$TAR"' EXIT RELPATH="${REPORT_DIR#reports/${SHA8}/}" if [ "$RELPATH" != "$REPORT_DIR" ] && [ -n "$RELPATH" ]; then TARGET="$WORK/${OWNER}/${REPO}/reports/${SHA8}/${RELPATH}" else TARGET="$WORK/${OWNER}/${REPO}/reports/${SHA8}" fi mkdir -p "$TARGET" cp -a "$REPORT_DIR/." "$TARGET/" cat > "$WORK/${OWNER}/${REPO}/reports/${SHA8}/.meta" <&2 cat /tmp/git-pages-publish-response.txt >&2 exit 1 ;; esac echo "$REPORT_BASE"