#!/usr/bin/env bash
# Build this checkout as a wheel and run quickstart interactively in a temporary HOME.
set -Eeuo pipefail

SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
REPO_ROOT="$(cd -- "$SCRIPT_DIR/.." && pwd)"
# shellcheck source=_tmp-home-common
source "$SCRIPT_DIR/_tmp-home-common"

[ "$#" -eq 0 ] || tmp_home_die "usage: bin/dev-tmp-home"

tmp_home_require uv
tmp_home_preflight isolated
tmp_home_init dev "$REPO_ROOT"
trap tmp_home_cleanup EXIT

tmp_home_print_codex_auth "Host Codex auth" "$ORIGINAL_HOME/.codex/auth.json"
tmp_home_copy_codex_auth "${PANOPTICON_DEV_TMP_HOME_AUTH:-0}"
tmp_home_print_codex_auth "Temporary Codex auth" "$TMP_HOME/.codex/auth.json"

mkdir -p "$TMP_HOME/dist"
uv build --wheel --out-dir "$TMP_HOME/dist" "$REPO_ROOT"
_pth_wheels=("$TMP_HOME"/dist/panopticon_next-*.whl)
[ "${#_pth_wheels[@]}" -eq 1 ] \
  || tmp_home_die "expected exactly one locally built panopticon-next wheel"

printf 'Installing local wheel into temporary pipx home: %s\n' "${_pth_wheels[0]}"
tmp_home_run pipx install --force "${_pth_wheels[0]}"
PANOPTICON_BIN="$PIPX_BIN_DIR/panopticon"
export PANOPTICON_BIN
[ -x "$PANOPTICON_BIN" ] || tmp_home_die "pipx did not install the panopticon executable"

printf 'Panopticon dev HOME: %s\n' "$TMP_HOME"
printf 'Worktree under test: %s\n' "$TARGET_REPO"
printf 'Isolated service URL: %s\n' "$TMP_PANOPTICON_SERVICE_URL"
tmp_home_run "$PANOPTICON_BIN" --version
printf 'Building isolated base task-container image before opening the dashboard...\n'
tmp_home_run "$PANOPTICON_BIN" build
cd -- "$TARGET_REPO"
_dev_status=0
tmp_home_run "$PANOPTICON_BIN" quickstart || _dev_status=$?
tmp_home_print_codex_auth "Final temporary Codex auth" "$TMP_HOME/.codex/auth.json"
tmp_home_print_codex_auth \
  "Final repo Codex auth" "$TMP_HOME/.config/panopticon/secrets/openai.d/auth.json"
exit "$_dev_status"
