Initial commit: NexusArchitect Professional Workstation Overhaul
This commit is contained in:
Executable
+86
@@ -0,0 +1,86 @@
|
||||
#!/usr/bin/env bash
|
||||
# -------------------------------------------------------------
|
||||
# Debug helper for NexusReader.Web.New (Blazor Server)
|
||||
# -------------------------------------------------------------
|
||||
# 1️⃣ Ensure the port is free before starting the server.
|
||||
# 2️⃣ Starts the server project in the background.
|
||||
# 3️⃣ Waits until the HTTP endpoint is reachable.
|
||||
# 4️⃣ Launches Chrome (or Chromium) with a clean temporary profile
|
||||
# and the remote‑debugging port (9222).
|
||||
# -------------------------------------------------------------
|
||||
|
||||
# ---- configuration ------------------------------------------------
|
||||
SERVER_PROJECT="src/NexusReader.Web.New/NexusReader.Web.csproj"
|
||||
APP_URL="http://localhost:5104"
|
||||
DEBUG_PORT=9222
|
||||
TMP_PROFILE="/tmp/blazor-chrome-debug"
|
||||
CHROME_CMD="google-chrome" # fallback will be tried automatically
|
||||
# ------------------------------------------------------------------
|
||||
|
||||
# Export environment variables for the app
|
||||
export ASPNETCORE_ENVIRONMENT=Development
|
||||
export ASPNETCORE_URLS="$APP_URL"
|
||||
|
||||
# Free the port if something is already listening on it
|
||||
PORT=$(echo "$APP_URL" | awk -F[:/] '{print $4}')
|
||||
if [ -n "$PORT" ]; then
|
||||
if lsof -ti:$PORT >/dev/null 2>&1; then
|
||||
echo "⚡ Port $PORT is in use – terminating existing process."
|
||||
fuser -k $PORT/tcp >/dev/null 2>&1 || kill -9 $(lsof -ti:$PORT) >/dev/null 2>&1
|
||||
sleep 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# Clean old temporary profile
|
||||
rm -rf "$TMP_PROFILE"
|
||||
|
||||
# Start the server in the background, capture its PID
|
||||
# We use --no-build because we assume you just built it,
|
||||
# and it prevents redundant build output in the console.
|
||||
dotnet run --project "$SERVER_PROJECT" --launch-profile http &
|
||||
SERVER_PID=$!
|
||||
echo "🚀 Blazor Server started (PID=$SERVER_PID). Waiting for $APP_URL …"
|
||||
|
||||
# Simple poll loop – wait up to 30 s for the app to become reachable
|
||||
MAX_WAIT=30
|
||||
elapsed=0
|
||||
while ! curl -s "$APP_URL" > /dev/null; do
|
||||
sleep 1
|
||||
((elapsed++))
|
||||
if (( elapsed >= MAX_WAIT )); then
|
||||
echo "❌ Timeout: $APP_URL never responded."
|
||||
kill $SERVER_PID 2>/dev/null
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
echo "✅ App is up! Launching Chrome..."
|
||||
|
||||
# Determine which browser binary is available
|
||||
if command -v "$CHROME_CMD" > /dev/null; then :; else
|
||||
if command -v chromium-browser > /dev/null; then CHROME_CMD="chromium-browser"; else
|
||||
if command -v chromium > /dev/null; then CHROME_CMD="chromium"; else
|
||||
echo "❌ Neither google-chrome nor chromium-browser found on PATH."
|
||||
kill $SERVER_PID 2>/dev/null
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# Launch Chrome with remote‑debugging and the temporary profile
|
||||
# Added --headless=new if you are on a server without display,
|
||||
# but keeping it interactive as requested.
|
||||
"$CHROME_CMD" \
|
||||
--remote-debugging-port=$DEBUG_PORT \
|
||||
--user-data-dir="$TMP_PROFILE" \
|
||||
--no-first-run \
|
||||
--no-default-browser-check \
|
||||
"$APP_URL" &
|
||||
CHROME_PID=$!
|
||||
|
||||
echo "🌐 Chrome launched (PID=$CHROME_PID)."
|
||||
echo "🔧 Open DevTools via: http://localhost:$DEBUG_PORT"
|
||||
|
||||
# keep the script alive until you stop it,
|
||||
# forwarding signals to both processes.
|
||||
trap 'echo "Stopping..."; kill $SERVER_PID $CHROME_PID 2>/dev/null' INT TERM EXIT
|
||||
wait $SERVER_PID
|
||||
Reference in New Issue
Block a user