#!/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 python3; do command -v "$command" >/dev/null || { printf 'missing command: %s\n' "$command" >&2; exit 127; }; done node_command="$(command -v node)" node_bin="$(cd "$(dirname "$node_command")" && pwd -P)/$(basename "$node_command")" 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=/usr/bin:/bin" "HOME=/nonexistent" "TMPDIR=/tmp" "LANG=${LANG:-C}" "THT_BIN=$THT_BIN") for name in LC_ALL 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_bin" "$repo_root/backend/scripts/p1-acceptance.mjs" "$@" status=$? set -e exit "$status"