#!/usr/bin/env bash

HOST_PORT="${HOST_PORT:-12001}"
BASE_IMAGE="${BASE_IMAGE:-docker.openhands.dev/openhands/openhands:1.5}"
IMAGE_TAG="${IMAGE_TAG:-openhands-local-runtime-gui:standalone}"
CONTAINER_NAME="${CONTAINER_NAME:-openhands-local-runtime-gui}"
BUILD_DIR="$(mktemp -d /tmp/openhands-local-runtime-build.XXXXXX)"
DOCKERFILE="${BUILD_DIR}/Dockerfile"

cleanup() {
  rm -rf "$BUILD_DIR"
}
trap cleanup EXIT

if ! sudo docker info >/dev/null 2>&1; then
  echo "Starting internal dockerd..."
  sudo dockerd > /tmp/openhands-dockerd.log 2>&1 &
  sleep 10
  if ! sudo docker info >/dev/null 2>&1; then
    echo "Failed to start dockerd. See /tmp/openhands-dockerd.log" >&2
    exit 1
  fi
fi

cat >"$DOCKERFILE" <<EOF
FROM ${BASE_IMAGE}
USER root
RUN apt-get update && apt-get install -y --no-install-recommends tmux && rm -rf /var/lib/apt/lists/*
RUN python - <<'PY'
from pathlib import Path
path = Path('/app/openhands/runtime/impl/local/local_runtime.py')
text = path.read_text()
replacements = {
    'pane = session.attached_pane': 'pane = session.active_pane',
    'session.kill_session()': 'session.kill()',
}
for old, new in replacements.items():
    if old in text:
        text = text.replace(old, new)
path.write_text(text)
PY
ENV RUNTIME=local
ENV ENABLE_BROWSER=false
ENV AGENT_ENABLE_BROWSING=false
EOF

if ! sudo docker build -t "$IMAGE_TAG" -f "$DOCKERFILE" "$BUILD_DIR"; then
  echo "Docker build failed" >&2
  exit 1
fi

sudo docker rm -f "$CONTAINER_NAME" >/dev/null 2>&1 || true
if ! sudo docker run -d --name "$CONTAINER_NAME" -p "${HOST_PORT}:3000" "$IMAGE_TAG"; then
  echo "Docker run failed; the port may already be in use." >&2
  exit 1
fi

if command -v curl >/dev/null 2>&1; then
  ready=0
  for _ in 1 2 3 4 5 6; do
    if curl -fsSI "http://127.0.0.1:${HOST_PORT}/" >/dev/null 2>&1; then
      ready=1
      break
    fi
    sleep 5
  done
  if [ "$ready" -ne 1 ]; then
    echo "Container started, but HTTP check failed. See: sudo docker logs ${CONTAINER_NAME}" >&2
    exit 1
  fi
fi

echo "OpenHands should be available on http://localhost:${HOST_PORT}"
