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