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

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
VENV_DIR="${DOC_READER_VENV_DIR:-$SCRIPT_DIR/.venv}"
REQ_FILE="$SCRIPT_DIR/requirements.txt"
STAMP_FILE="$VENV_DIR/.requirements.sha256"

PYTHON_BIN="${PYTHON_BIN:-$(command -v python3 || true)}"
if [[ -z "$PYTHON_BIN" ]]; then
  echo "[doc-reader] python3 not found. Install Python 3 and try again." >&2
  exit 1
fi

mkdir -p "$(dirname "$VENV_DIR")"

if [[ ! -x "$VENV_DIR/bin/python" ]]; then
  echo "[doc-reader] Creating virtual environment..."
  "$PYTHON_BIN" -m venv "$VENV_DIR"
fi

if [[ ! -f "$REQ_FILE" ]]; then
  echo "[doc-reader] requirements.txt not found at $REQ_FILE" >&2
  exit 1
fi

REQ_HASH="$(shasum -a 256 "$REQ_FILE" | awk '{print $1}')"
INSTALLED_HASH=""
if [[ -f "$STAMP_FILE" ]]; then
  INSTALLED_HASH="$(cat "$STAMP_FILE")"
fi

if [[ "$REQ_HASH" != "$INSTALLED_HASH" ]]; then
  echo "[doc-reader] Installing/updating dependencies..."
  "$VENV_DIR/bin/python" -m pip install --upgrade pip
  "$VENV_DIR/bin/python" -m pip install -r "$REQ_FILE"
  printf '%s\n' "$REQ_HASH" > "$STAMP_FILE"
fi

if [[ "${1:-}" == "--prepare-only" ]]; then
  echo "[doc-reader] Environment ready."
  exit 0
fi

export PYTHONPATH="$SCRIPT_DIR${PYTHONPATH:+:$PYTHONPATH}"
exec "$VENV_DIR/bin/python" -m doc_reader.tray "$@"
