#!/usr/bin/env bash set -euo pipefail repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd -P)" if [[ $# -lt 1 || "$1" != "integration" || $# -gt 2 || ( $# -eq 2 && "$2" != "--keep" ) ]]; then printf 'usage: %s integration [--keep]\n' "$0" >&2 exit 2 fi for command in node npm git; do command -v "$command" >/dev/null || { printf 'missing command: %s\n' "$command" >&2; exit 127; }; done THT_BIN="${THT_BIN:-$repo_root/harness/.venv/bin/tht}" [[ "$THT_BIN" = /* && -x "$THT_BIN" ]] || { printf 'THT_BIN must be an absolute executable path\n' >&2; exit 127; } npm --prefix "$repo_root/backend" run build safe_env=(env -i "PATH=$PATH" "HOME=${HOME:-/nonexistent}" "LANG=${LANG:-C}" "THT_BIN=$THT_BIN") for name in LC_ALL TMPDIR TZ; do [[ -n "${!name:-}" ]] && safe_env+=("$name=${!name}") done [[ -n "${P1_ACCEPTANCE_FAIL_AT:-}" ]] && safe_env+=("P1_ACCEPTANCE_FAIL_AT=$P1_ACCEPTANCE_FAIL_AT") set +e "${safe_env[@]}" node "$repo_root/backend/scripts/p1-acceptance.mjs" "$@" status=$? set -e exit "$status"