#!/usr/bin/env bash
set -euo pipefail
APP="/opt/qm-komputasi/qm-komputasi.py"
PORT="${QM_KOMPUTASI_PORT:-8801}"
if [ -n "${QM_KOMPUTASI_DATA_DIR:-}" ]; then
  DATA_DIR="$QM_KOMPUTASI_DATA_DIR"
else
  REAL_HOME="$(getent passwd "$(id -u)" 2>/dev/null | cut -d: -f6 || true)"
  [ -n "$REAL_HOME" ] || REAL_HOME="$HOME"
  DATA_DIR="$REAL_HOME/.local/share/qm-komputasi"
fi
mkdir -p "$DATA_DIR" "$DATA_DIR/qm_runs" "$DATA_DIR/research_complete"
if [ -n "${CONDA_PREFIX:-}" ] && [ -x "${CONDA_PREFIX}/bin/python" ]; then
  PYTHON_BIN="${CONDA_PREFIX}/bin/python"
else
  VENV="$DATA_DIR/venv"
  if [ ! -x "$VENV/bin/python" ]; then python3 -m venv "$VENV"; fi
  PYTHON_BIN="$VENV/bin/python"
fi
CORE=(numpy pandas 'streamlit>=1.63.0' rdkit pyscf scipy geometric pyberny ase py3Dmol)
if ! "$PYTHON_BIN" - <<'PY' >/dev/null 2>&1
import numpy,pandas,streamlit,rdkit,pyscf,scipy,geometric,berny,ase,py3Dmol
assert hasattr(streamlit, "iframe"), "Streamlit belum menyediakan st.iframe"
_v = tuple(int(x) for x in streamlit.__version__.split(".")[:2])
assert _v >= (1, 63), "Streamlit minimal 1.63.0 diperlukan"
PY
then
  "$PYTHON_BIN" -m pip install --disable-pip-version-check --prefer-binary --upgrade "${CORE[@]}"
fi
export QM_KOMPUTASI_DATA_DIR="$DATA_DIR"
exec "$PYTHON_BIN" -m streamlit run "$APP" --server.address=0.0.0.0 --server.port="$PORT" --server.headless=true "$@"
