start-server.sh 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #!/bin/bash
  2. # Start the brainstorm server and output connection info
  3. # Usage: start-server.sh
  4. #
  5. # Starts server on a random high port, outputs JSON with URL
  6. # Each session gets its own temp directory to avoid conflicts
  7. # Server runs in background, PID saved for cleanup
  8. SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
  9. # Generate unique session directory
  10. SESSION_ID="$$-$(date +%s)"
  11. SCREEN_DIR="/tmp/brainstorm-${SESSION_ID}"
  12. PID_FILE="${SCREEN_DIR}/.server.pid"
  13. LOG_FILE="${SCREEN_DIR}/.server.log"
  14. # Create fresh session directory
  15. mkdir -p "$SCREEN_DIR"
  16. # Kill any existing server
  17. if [[ -f "$PID_FILE" ]]; then
  18. old_pid=$(cat "$PID_FILE")
  19. kill "$old_pid" 2>/dev/null
  20. rm -f "$PID_FILE"
  21. fi
  22. # Start server, capturing output to log file
  23. cd "$SCRIPT_DIR"
  24. BRAINSTORM_DIR="$SCREEN_DIR" node index.js > "$LOG_FILE" 2>&1 &
  25. SERVER_PID=$!
  26. echo "$SERVER_PID" > "$PID_FILE"
  27. # Wait for server-started message (check log file)
  28. for i in {1..50}; do
  29. if grep -q "server-started" "$LOG_FILE" 2>/dev/null; then
  30. # Extract and output the server-started line
  31. grep "server-started" "$LOG_FILE" | head -1
  32. exit 0
  33. fi
  34. sleep 0.1
  35. done
  36. # Timeout - server didn't start
  37. echo '{"error": "Server failed to start within 5 seconds"}'
  38. exit 1