From f58d1f06e6821237bfb7d80a6caa9257f8ee0e30 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 27 May 2026 12:56:35 +0000 Subject: [PATCH] Add setup.sh to install dependencies and start dev server on an available port --- setup.sh | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100755 setup.sh diff --git a/setup.sh b/setup.sh new file mode 100755 index 0000000..26e8874 --- /dev/null +++ b/setup.sh @@ -0,0 +1,67 @@ +#!/usr/bin/env bash +set -euo pipefail + +PREFERRED_PORT=5173 +MAX_PORT=5200 + +# Find an available port starting from PREFERRED_PORT +find_port() { + local port=$PREFERRED_PORT + while [ $port -le $MAX_PORT ]; do + if ! lsof -i TCP:"$port" -sTCP:LISTEN -t >/dev/null 2>&1 && \ + ! ss -tlnH "sport = :$port" 2>/dev/null | grep -q .; then + echo "$port" + return + fi + port=$((port + 1)) + done + echo "" +} + +echo "=== Bible Study App Setup ===" +echo "" + +# ── Node check ─────────────────────────────────────────────────────────────── +if ! command -v node >/dev/null 2>&1; then + echo "ERROR: Node.js is not installed. Install it from https://nodejs.org/ (v18+)." + exit 1 +fi +NODE_VERSION=$(node -v | sed 's/v//' | cut -d. -f1) +if [ "$NODE_VERSION" -lt 18 ]; then + echo "ERROR: Node.js v18 or higher is required (found $(node -v))." + exit 1 +fi +echo "Node.js $(node -v) found." + +# ── npm check ──────────────────────────────────────────────────────────────── +if ! command -v npm >/dev/null 2>&1; then + echo "ERROR: npm is not installed." + exit 1 +fi +echo "npm $(npm -v) found." + +# ── Install dependencies ────────────────────────────────────────────────────── +echo "" +echo "Installing dependencies..." +npm install + +# ── Find a free port ───────────────────────────────────────────────────────── +echo "" +PORT=$(find_port) +if [ -z "$PORT" ]; then + echo "ERROR: No free port found between $PREFERRED_PORT and $MAX_PORT." + exit 1 +fi + +if [ "$PORT" -ne "$PREFERRED_PORT" ]; then + echo "Port $PREFERRED_PORT is in use. Using port $PORT instead." +else + echo "Port $PORT is available." +fi + +# ── Launch ──────────────────────────────────────────────────────────────────── +echo "" +echo "Starting dev server on http://localhost:$PORT" +echo "(Press Ctrl+C to stop)" +echo "" +exec npx vite --port "$PORT" --host