#!/usr/bin/env bash
set -euo pipefail
APPDIR=/opt/molprep
APP="$APPDIR/MolPrep_V1.0.0.py"
DATA_HOME="${MOLPREP_HOME:-${XDG_DATA_HOME:-$HOME/.local/share}/molprep}"
VENV="$DATA_HOME/venv"
PORT="${MOLPREP_PORT:-8806}"
mkdir -p "$DATA_HOME"
if [ ! -x "$VENV/bin/python" ]; then
  echo "[MolPrep] Membuat virtual environment: $VENV"
  python3 -m venv "$VENV"
fi
REQ_HASH="$($VENV/bin/python - <<'PY'
from pathlib import Path
import hashlib
p=Path('/opt/molprep/requirements.txt')
print(hashlib.sha256(p.read_bytes()).hexdigest()[:16])
PY
)"
STAMP="$VENV/.molprep_deps_${REQ_HASH}"
if [ ! -f "$STAMP" ]; then
  echo "[MolPrep] Memasang/memperbarui dependensi Python (eksekusi pertama dapat memerlukan waktu)..."
  "$VENV/bin/python" -m pip install --upgrade pip setuptools wheel
  "$VENV/bin/python" -m pip install -r "$APPDIR/requirements.txt"
  # Protonation pH-aware adalah fitur opsional. Gagal memasang paket ini tidak menggagalkan aplikasi.
  "$VENV/bin/python" -m pip install dimorphite_dl >/dev/null 2>&1 || true
  touch "$STAMP"
fi
export MOLPREP_HOME="$DATA_HOME"
export MOLPREP_NO_AUTO_PIP=1
exec "$VENV/bin/python" -m streamlit run "$APP" \
  --server.port "$PORT" \
  --server.address 0.0.0.0 \
  --browser.gatherUsageStats false \
  --theme.base light \
  --theme.backgroundColor '#F8FAFC' \
  --theme.secondaryBackgroundColor '#FFFFFF' \
  --theme.textColor '#10243E' \
  --theme.primaryColor '#0F766E'
