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

APP_NAME="meshtastic-client"
APP_DIR="/opt/${APP_NAME}"
DATA_DIR="${XDG_DATA_HOME:-$HOME/.local/share}/${APP_NAME}"
VENV_DIR="${DATA_DIR}/venv"
PY_BIN="$(command -v python3 || true)"

if [[ -z "$PY_BIN" ]]; then
  echo "[${APP_NAME}] ERROR: python3 not found." >&2
  exit 1
fi

# Tkinter must be available at system level
if ! "$PY_BIN" -c 'import tkinter' >/dev/null 2>&1; then
  echo "[${APP_NAME}] ERROR: Tkinter is missing (install python3-tk)." >&2
  echo "  sudo apt update && sudo apt install -y python3-tk" >&2
  exit 2
fi

mkdir -p "$DATA_DIR"

if [[ ! -d "$VENV_DIR" ]]; then
  echo "[${APP_NAME}] Creating per-user venv at: $VENV_DIR"
  "$PY_BIN" -m venv "$VENV_DIR"

  PIP_BIN="$VENV_DIR/bin/pip"
  echo "[${APP_NAME}] Upgrading pip..."
  "$PIP_BIN" install --upgrade pip

  echo "[${APP_NAME}] Installing Python dependencies..."
  "$PIP_BIN" install \
    meshtastic \
    pyserial \
    pypubsub \
    protobuf \
    bleak

  echo "[${APP_NAME}] Virtualenv ready."
fi

exec "$VENV_DIR/bin/python" "${APP_DIR}/meshtastic_client.py" "$@"
