#!/usr/bin/env bash
# PhoneIDE runner - self-contained, downloads wheel from phoneide.samai.cc
set -euo pipefail
PHONEIDE_VERSION="1.2.42"
PHONEIDE_DIR="${HOME}/.phoneide/runtime"
VENV_DIR="${PHONEIDE_DIR}/venv"
BASE_URL="https://phoneide.samai.cc/downloads"

for cmd in python3.14 python3.13 python3.12 python3.11 python3.10 python3.8 python3 python; do
    if command -v "$cmd" &>/dev/null; then
        PY="$cmd"; break
    fi
done
[ -z "${PY:-}" ] && { echo "phoneide: Python 3.8+ required" >&2; exit 1; }

if [ ! -d "$VENV_DIR" ]; then
    "$PY" -m venv "$VENV_DIR" 2>/dev/null || "$PY" -m venv --without-pip "$VENV_DIR"
fi

if [ ! -x "$VENV_DIR/bin/pip" ]; then
    curl -fsSL https://bootstrap.pypa.io/get-pip.py -o /tmp/get-pip.py 2>/dev/null || true
    [ -f /tmp/get-pip.py ] && "$VENV_DIR/bin/python" /tmp/get-pip.py --quiet 2>/dev/null || true
fi

MARKER="$VENV_DIR/.phoneide_version"
if [ ! -f "$MARKER" ] || [ "$(cat "$MARKER")" != "$PHONEIDE_VERSION" ]; then
    echo "Installing phoneide v$PHONEIDE_VERSION from phoneide.samai.cc ..."
    WHL_NAME="$(curl -fsSL "$BASE_URL/" 2>/dev/null | grep -oE 'phoneide-[0-9][^"]+\.whl' | head -1 || true)"
    if [ -n "$WHL_NAME" ]; then
        TMP_WHL="$(mktemp -t phoneide-whl-XXXXXX)"
        curl -fSL --retry 3 --retry-delay 2 -o "$TMP_WHL" "$BASE_URL/$WHL_NAME"
        "$VENV_DIR/bin/pip" install --upgrade "$TMP_WHL" 2>/dev/null || \
        "$VENV_DIR/bin/pip" install "$TMP_WHL" 2>/dev/null || true
        rm -f "$TMP_WHL"
        echo "$PHONEIDE_VERSION" > "$MARKER"
    else
        echo "No wheel on phoneide.samai.cc, falling back to PyPI ..."
        "$VENV_DIR/bin/pip" install "phoneide==$PHONEIDE_VERSION" 2>/dev/null || true
        echo "$PHONEIDE_VERSION" > "$MARKER"
    fi
fi

if [ -x "$VENV_DIR/bin/phoneide" ]; then
    exec "$VENV_DIR/bin/phoneide" "$@"
else
    exec "$VENV_DIR/bin/python" -m phoneide_server "$@"
fi
