likwid/scripts/dev-start.sh

84 lines
2.2 KiB
Bash
Raw Normal View History

#!/bin/bash
# Likwid Development Environment Starter
# Starts PostgreSQL (Podman), backend (Rust), and frontend (Astro)
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
ROOT_DIR="$(dirname "$SCRIPT_DIR")"
STATE_DIR="$SCRIPT_DIR/.dev"
STATE_FILE="$STATE_DIR/state.json"
BACKEND_LOG="$STATE_DIR/backend.log"
FRONTEND_LOG="$STATE_DIR/frontend.log"
mkdir -p "$STATE_DIR"
# Environment defaults
export POSTGRES_USER="${POSTGRES_USER:-likwid}"
export POSTGRES_PASSWORD="${POSTGRES_PASSWORD:-likwid}"
export POSTGRES_DB="${POSTGRES_DB:-likwid}"
export DATABASE_URL="postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@127.0.0.1:5432/${POSTGRES_DB}"
# Check if already running
if [ -f "$STATE_FILE" ]; then
BACKEND_PID=$(jq -r '.backendPid // empty' "$STATE_FILE" 2>/dev/null)
if [ -n "$BACKEND_PID" ] && kill -0 "$BACKEND_PID" 2>/dev/null; then
echo "Already running (backend PID $BACKEND_PID). Run dev-stop.sh first."
exit 0
fi
fi
# Start PostgreSQL
echo "Starting PostgreSQL..."
podman-compose -f "$ROOT_DIR/compose/dev.yml" up -d 2>/dev/null || true
# Wait for PostgreSQL
echo "Waiting for PostgreSQL..."
for i in {1..30}; do
if nc -z 127.0.0.1 5432 2>/dev/null; then
break
fi
sleep 1
done
# Start backend
echo "Starting backend..."
cd "$ROOT_DIR/backend"
cargo run > "$BACKEND_LOG" 2>&1 &
BACKEND_PID=$!
# Start frontend
echo "Starting frontend..."
cd "$ROOT_DIR/frontend"
PUBLIC_API_BASE="http://127.0.0.1:3000" npm run dev > "$FRONTEND_LOG" 2>&1 &
FRONTEND_PID=$!
# Save state
cat > "$STATE_FILE" << EOF
{
"backendPid": $BACKEND_PID,
"frontendPid": $FRONTEND_PID,
"startedAt": "$(date -Iseconds)"
}
EOF
sleep 3
# Status report
echo ""
echo "=== Likwid Dev Environment ==="
if kill -0 "$BACKEND_PID" 2>/dev/null; then
echo "Backend: Running (PID $BACKEND_PID) - http://127.0.0.1:3000"
else
echo "Backend: FAILED - check $BACKEND_LOG"
fi
if kill -0 "$FRONTEND_PID" 2>/dev/null; then
echo "Frontend: Running (PID $FRONTEND_PID) - http://localhost:4321"
else
echo "Frontend: FAILED - check $FRONTEND_LOG"
fi
echo "PostgreSQL: Running on port 5432"
echo ""
echo "Logs: $STATE_DIR"
echo "Stop: ./scripts/dev-stop.sh"