#!/bin/bash

# Change directory to the first argument passed to the script
cd "$1" || exit 1
echo "Changed directory to $1"

# Start the server in the background
poetry run pc run --env "$2" & pid=$!
echo "Started server with PID $pid"

# Wait for ports 3000 and 8000 to become available
wait_time=0
while ! nc -z localhost 3000 || ! lsof -i :8000 >/dev/null; do
  if ! kill -0 "$pid" >/dev/null 2>&1; then
      echo "Error: Server process with PID $pid exited early"
      break
  fi
  if ((wait_time >= 600)); then
    echo "Error: Timeout waiting for ports 3000 and 8000 to become available"
    exit 1
  fi
  sleep 5
  ((wait_time += 5))
  echo "Waiting for ports 3000 and 8000 to become available (waited $wait_time seconds)..."
done

# Check if the server is still running
if kill -0 "$pid" >/dev/null 2>&1; then
  echo "Integration test passed"
  kill -TERM $(pgrep -P "$pid")
  exit 0
else
  echo "Integration test failed"
  exit 1
fi