#!/usr/bin/env bash
set -euo pipefail

# Ghostty / GUI 启动的 shell 可能未加载完整 PATH，先补齐常见目录
bootstrap_path() {
  local extras=(
    "$HOME/.npm-global/bin"
    "$HOME/.bun/bin"
    "/opt/homebrew/bin"
    "/usr/local/bin"
    "$HOME/.local/bin"
    "$HOME/bin"
  )
  local d
  for d in "${extras[@]}"; do
    if [[ -d "$d" ]] && [[ ":$PATH:" != *":$d:"* ]]; then
      PATH="$d:$PATH"
    fi
  done
  export PATH
}

find_bun() {
  if command -v bun >/dev/null 2>&1; then
    command -v bun
    return 0
  fi
  local candidate
  for candidate in \
    "$HOME/.bun/bin/bun" \
    "/opt/homebrew/bin/bun" \
    "/usr/local/bin/bun"; do
    if [[ -x "$candidate" ]]; then
      printf '%s' "$candidate"
      return 0
    fi
  done
  return 1
}

# npm -g 会在 ~/.npm-global/bin 建符号链接，须解析真实路径才能定位包根目录
resolve_script_path() {
  local src="${BASH_SOURCE[0]}"
  while [[ -L "$src" ]]; do
    local dir
    dir="$(cd "$(dirname "$src")" && pwd)"
    src="$(readlink "$src")"
    [[ "$src" != /* ]] && src="$dir/$src"
  done
  printf '%s' "$src"
}

bootstrap_path

BUN_BIN="$(find_bun || true)"
if [[ -z "$BUN_BIN" ]]; then
  cat >&2 <<'EOF'
rios-cli 需要 Bun >= 1.2，但未在 PATH 中找到 bun。

Ghostty / 新终端窗口若找不到命令，请将以下内容写入 ~/.zprofile 后重开终端：

  export BUN_INSTALL="$HOME/.bun"
  export PATH="$HOME/.bun/bin:$HOME/.npm-global/bin:/opt/homebrew/bin:$PATH"

安装 Bun: curl -fsSL https://bun.sh/install | bash
EOF
  exit 1
fi

ROOT_DIR="$(cd "$(dirname "$(resolve_script_path)")/.." && pwd)"
cd "$ROOT_DIR"

BUN_ARGS=()
if [[ -f "$ROOT_DIR/.env" ]]; then
  BUN_ARGS+=(--env-file=.env)
fi

run_bun() {
  if [[ ${#BUN_ARGS[@]} -gt 0 ]]; then
    exec "$BUN_BIN" "${BUN_ARGS[@]}" "$@"
  fi
  exec "$BUN_BIN" "$@"
}

if [[ "${CLAUDE_CODE_FORCE_RECOVERY_CLI:-0}" == "1" ]]; then
  run_bun ./src/localRecoveryCli.ts "$@"
fi

run_bun ./src/entrypoints/cli.tsx "$@"
