Files
guide-board/scripts/external_extension_acceptance.sh

107 lines
2.8 KiB
Bash
Executable File

#!/usr/bin/env sh
set -eu
ROOT_DIR="$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)"
MODE="${1:-plan}"
EXTENSION_DIR="${GUIDE_BOARD_ACCEPT_EXTENSION_DIR:-../open-cmis-tck}"
TARGET="${GUIDE_BOARD_ACCEPT_TARGET:-../open-cmis-tck/profiles/targets/kontextual-cmis-compat.json}"
ASSESSMENT="${GUIDE_BOARD_ACCEPT_ASSESSMENT:-../open-cmis-tck/profiles/assessments/cmis-browser-baseline.json}"
OUTPUT_DIR="${GUIDE_BOARD_ACCEPT_OUTPUT_DIR:-${TMPDIR:-/tmp}/guide-board-external-extension-acceptance}"
PLAN_OUTPUT="${GUIDE_BOARD_ACCEPT_PLAN_OUTPUT:-$OUTPUT_DIR/plan.json}"
RUN_DIR="${GUIDE_BOARD_ACCEPT_RUN_DIR:-$OUTPUT_DIR/open-cmis-tck-baseline}"
PYTHON="${PYTHON:-python3}"
case "$MODE" in
plan|run)
;;
*)
echo "Usage: $0 [plan|run]" >&2
exit 64
;;
esac
cd "$ROOT_DIR"
export PYTHONPATH="$ROOT_DIR/src${PYTHONPATH:+:$PYTHONPATH}"
if [ ! -f "$EXTENSION_DIR/extension.json" ]; then
echo "ERROR: extension manifest not found at $EXTENSION_DIR/extension.json" >&2
exit 66
fi
mkdir -p "$OUTPUT_DIR"
echo "==> Listing discovered extensions"
"$PYTHON" -m guide_board \
--root "$ROOT_DIR" \
--extension-dir "$EXTENSION_DIR" \
extensions list
echo "==> Validating extension manifests"
"$PYTHON" -m guide_board \
--root "$ROOT_DIR" \
--extension-dir "$EXTENSION_DIR" \
extensions validate
echo "==> Validating target profile"
"$PYTHON" -m guide_board \
--root "$ROOT_DIR" \
--extension-dir "$EXTENSION_DIR" \
profile validate-target "$TARGET"
echo "==> Validating assessment profile"
"$PYTHON" -m guide_board \
--root "$ROOT_DIR" \
--extension-dir "$EXTENSION_DIR" \
profile validate-assessment "$ASSESSMENT"
echo "==> Generating run plan"
"$PYTHON" -m guide_board \
--root "$ROOT_DIR" \
--extension-dir "$EXTENSION_DIR" \
plan \
--target "$TARGET" \
--assessment "$ASSESSMENT" \
--output "$PLAN_OUTPUT"
if [ "$MODE" = "plan" ]; then
echo "External extension acceptance plan passed."
echo "Plan output: $PLAN_OUTPUT"
echo "Run live acceptance with: $0 run"
exit 0
fi
echo "==> Running live assessment"
"$PYTHON" -m guide_board \
--root "$ROOT_DIR" \
--extension-dir "$EXTENSION_DIR" \
run \
--target "$TARGET" \
--assessment "$ASSESSMENT" \
--output-dir "$RUN_DIR"
echo "==> Verifying retained run artifacts"
for path in \
"$RUN_DIR/run.json" \
"$RUN_DIR/plan.json" \
"$RUN_DIR/retention-summary.json" \
"$RUN_DIR/normalized/evidence.json" \
"$RUN_DIR/normalized/findings.json" \
"$RUN_DIR/normalized/mappings.json" \
"$RUN_DIR/reports/assessment-package.json" \
"$RUN_DIR/reports/report.md"
do
if [ ! -f "$path" ]; then
echo "ERROR: expected artifact missing: $path" >&2
exit 1
fi
done
echo "==> Reviewing retained report paths"
"$PYTHON" -m guide_board \
--root "$ROOT_DIR" \
runs report \
--runs-dir "$OUTPUT_DIR"
echo "External extension live acceptance passed."
echo "Run artifacts: $RUN_DIR"