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

ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
cd "$ROOT"

PORT="${AUTOPROTOCOL_PORT:-8501}"
HOST="${AUTOPROTOCOL_HOST:-0.0.0.0}"
LOG_DIR="$ROOT/.tmp"
PID_FILE="$LOG_DIR/autoprotocol-webapp.pid"
LOG_FILE="$LOG_DIR/autoprotocol-webapp.log"
PYTHON="$ROOT/.venv/bin/python"
STREAMLIT="$ROOT/.venv/bin/streamlit"

mkdir -p "$LOG_DIR" input output

if [[ ! -x "$STREAMLIT" ]]; then
  echo "Streamlit fehlt in .venv. Bitte ausführen: uv venv .venv --python 3.11 && uv pip install --python .venv/bin/python -r requirements.txt" >&2
  exit 1
fi

if [[ -f "$PID_FILE" ]]; then
  old_pid="$(cat "$PID_FILE")"
  if [[ -n "$old_pid" ]] && kill -0 "$old_pid" 2>/dev/null; then
    echo "Autoprotocol läuft bereits mit PID $old_pid"
    exec "$ROOT/scripts/status-webapp.sh"
  fi
  rm -f "$PID_FILE"
fi

nohup "$STREAMLIT" run app.py \
  --server.address "$HOST" \
  --server.port "$PORT" \
  --server.headless true \
  --server.maxUploadSize "${AUTOPROTOCOL_MAX_UPLOAD_MB:-4096}" \
  >"$LOG_FILE" 2>&1 &

echo $! > "$PID_FILE"
sleep 2
exec "$ROOT/scripts/status-webapp.sh"
