- Updated `rebuild.sh` to include error handling for directory changes and improved server startup checks, providing clearer feedback on server status. - Enhanced `watch-activity.sh` to wait for the log file creation with a timeout and added user guidance for ensuring server activity logging. - Improved user feedback in both scripts to facilitate easier debugging and monitoring of server and log file states.
97 lines
2.7 KiB
Bash
Executable File
97 lines
2.7 KiB
Bash
Executable File
#!/bin/bash
|
|
# Complete clean rebuild and start script for MirrorMatch
|
|
# Usage: ./rebuild.sh [dev|prod]
|
|
# dev - Development mode (hot reload, foreground)
|
|
# prod - Production mode (optimized, background with logging)
|
|
|
|
set -e
|
|
|
|
# Get the directory where this script is located
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
cd "$SCRIPT_DIR" || {
|
|
echo "Error: Could not change to script directory: $SCRIPT_DIR"
|
|
exit 1
|
|
}
|
|
|
|
MODE=${1:-prod}
|
|
|
|
echo "========================================="
|
|
echo "MirrorMatch - Clean Rebuild & Start"
|
|
echo "Mode: ${MODE}"
|
|
echo "Working directory: $SCRIPT_DIR"
|
|
echo "========================================="
|
|
|
|
# Step 1: Kill everything
|
|
echo ""
|
|
echo "Step 1: Killing all processes..."
|
|
sudo fuser -k 3000/tcp 2>/dev/null || true
|
|
killall -9 node 2>/dev/null || true
|
|
pkill -f "next" 2>/dev/null || true
|
|
sleep 2
|
|
echo "✓ All processes killed"
|
|
|
|
# Step 2: Free ports
|
|
echo ""
|
|
echo "Step 2: Freeing ports..."
|
|
lsof -ti:3000 | xargs kill -9 2>/dev/null || true
|
|
lsof -ti:3003 | xargs kill -9 2>/dev/null || true
|
|
sleep 1
|
|
echo "✓ Ports freed"
|
|
|
|
# Step 3: Clean build artifacts
|
|
echo ""
|
|
echo "Step 3: Cleaning build artifacts..."
|
|
rm -rf .next node_modules/.cache .next/cache .next/dev/lock 2>/dev/null || true
|
|
echo "✓ Build artifacts cleaned"
|
|
|
|
# Step 4: Rebuild (only for production)
|
|
if [ "$MODE" = "prod" ]; then
|
|
echo ""
|
|
echo "Step 4: Rebuilding application..."
|
|
npm run build
|
|
echo "✓ Build complete"
|
|
fi
|
|
|
|
# Step 5: Start server
|
|
echo ""
|
|
echo "Step 5: Starting server..."
|
|
echo "========================================="
|
|
|
|
if [ "$MODE" = "dev" ]; then
|
|
echo "Development mode - logs will appear below:"
|
|
echo "Press Ctrl+C to stop"
|
|
echo "========================================="
|
|
echo ""
|
|
export NODE_ENV=development
|
|
unset AUTH_TRUST_HOST
|
|
npm run dev
|
|
else
|
|
LOG_FILE="${LOG_FILE:-/tmp/mirrormatch-server.log}"
|
|
echo "Production mode - server running in background"
|
|
echo "View logs: tail -f $LOG_FILE"
|
|
echo "========================================="
|
|
echo ""
|
|
export NODE_ENV=production
|
|
unset AUTH_TRUST_HOST
|
|
npm run start > "$LOG_FILE" 2>&1 &
|
|
SERVER_PID=$!
|
|
echo "Server PID: $SERVER_PID"
|
|
echo "Log file: $LOG_FILE"
|
|
echo ""
|
|
|
|
# Wait for server to start (check log file for "Ready" message or check HTTP)
|
|
echo "Waiting for server to start..."
|
|
for i in {1..30}; do
|
|
if curl -s -o /dev/null -w "%{http_code}" http://localhost:3000 2>/dev/null | grep -q "200\|307\|404"; then
|
|
echo "✓ Server is running on http://localhost:3000"
|
|
break
|
|
fi
|
|
if [ $i -eq 30 ]; then
|
|
echo "⚠ Server may still be starting. Check logs: tail -f $LOG_FILE"
|
|
echo " Or check if process is running: ps -p $SERVER_PID"
|
|
else
|
|
sleep 1
|
|
fi
|
|
done
|
|
fi
|