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

ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
SERVER_DIR="$ROOT_DIR/server"
LOG_FILE="/tmp/aesdemo_server.log"
FOLLOW=1

if [[ "${1:-}" == "--no-follow" ]]; then
  FOLLOW=0
fi

# Build
(cd "$SERVER_DIR" && go build ./...)

# Kill old server on 8080 if exists
(lsof -ti tcp:8080 | xargs -r kill -9) || true

# Run
(cd "$SERVER_DIR" && nohup go run ./cmd/server --config ./config.yaml >"$LOG_FILE" 2>&1 &)

# Wait for ready
for i in $(seq 1 40); do
  if curl -sS http://127.0.0.1:8080/ >/dev/null 2>&1; then
    break
  fi
  sleep 0.25
  if [ "$i" -eq 40 ]; then
    echo "Server failed to start on :8080"
    exit 1
  fi
done

echo "[script] Server is running on :8080 (logs: $LOG_FILE)"
if [[ "$FOLLOW" -eq 1 ]]; then
  tail -n 50 -f "$LOG_FILE"
else
  tail -n 50 "$LOG_FILE"
fi
