#!/usr/bin/env sh set -eu DESCRIPTION="${1:-}" CONTEXT="${2:-}" SUITE="${3:-}" STATUS="${4:-success}" [ -n "$DESCRIPTION" ] || { echo "ERROR: description argument required" >&2; exit 1; } [ -n "$CONTEXT" ] || { echo "ERROR: context argument required" >&2; exit 1; } [ -n "$SUITE" ] || { echo "ERROR: suite argument required" >&2; exit 1; } REPORT_DIR="reports/${SUITE}" if [ ! -d "$REPORT_DIR" ]; then echo "ERROR: $REPORT_DIR not found" >&2 sh .ci/scripts/report-status.sh failure "$DESCRIPTION" "$CONTEXT" exit 1 fi FILE_COUNT=0 SUBDIR_COUNT=0 ENTRIES="" for f in "$REPORT_DIR"/*; do [ -f "$f" ] || continue base=$(basename "$f") [ "$base" = "index.html" ] && continue FILE_COUNT=$((FILE_COUNT + 1)) ENTRIES="${ENTRIES}file:${base} " done for d in "$REPORT_DIR"/*/; do [ -d "$d" ] || continue base=$(basename "$d") [ -f "$d/index.html" ] || continue SUBDIR_COUNT=$((SUBDIR_COUNT + 1)) ENTRIES="${ENTRIES}dir:${base} " done TOTAL=$((FILE_COUNT + SUBDIR_COUNT)) if [ "$TOTAL" -eq 0 ]; then echo "ERROR: no reportable items in $REPORT_DIR" >&2 sh .ci/scripts/report-status.sh failure "$DESCRIPTION" "$CONTEXT" exit 1 fi SHA8=$(echo "${GITHUB_SHA:-xxxxxxxx}" | cut -c1-8) humanize() { name="$1" name=$(echo "$name" | sed -e 's/\.[^.]*$//' -e 's/[-_]/ /g') first=$(echo "$name" | cut -c1 | tr '[:lower:]' '[:upper:]') rest=$(echo "$name" | cut -c2-) echo "${first}${rest}" } generate_index() { { echo '' echo "$DESCRIPTION" echo '' echo "

$DESCRIPTION

' } > "$REPORT_DIR/index.html" } STAGED="reports/${SHA8}/${SUITE}" mkdir -p "$STAGED" if [ "$TOTAL" -eq 1 ]; then cp -a "$REPORT_DIR/." "$STAGED/" sh .ci/scripts/publish-git-pages.sh "$SUITE" first_entry=$(echo "$ENTRIES" | head -1) first_type=$(echo "$first_entry" | cut -d: -f1) first_name=$(echo "$first_entry" | cut -d: -f2-) if [ "$first_type" = "file" ]; then SINGLE_ENTRY="$first_name" else SINGLE_ENTRY="${first_name}/index.html" fi URL="${GIT_PAGES_URL}/${GITHUB_REPOSITORY}/reports/${SHA8}/${SUITE}/${SINGLE_ENTRY}" sh .ci/scripts/report-status.sh "$STATUS" "$DESCRIPTION" "$CONTEXT" "" "$URL" else generate_index cp -a "$REPORT_DIR/." "$STAGED/" sh .ci/scripts/publish-git-pages.sh "$SUITE" sh .ci/scripts/report-status.sh "$STATUS" "$DESCRIPTION" "$CONTEXT" "$SUITE" fi rm -rf "$STAGED"