veza/apps/web/scripts/check_backend.sh

75 lines
2.2 KiB
Bash
Executable file

#!/bin/bash
# scripts/check_backend.sh
# Vérifie la disponibilité des services backend nécessaires pour le frontend Veza.
# Usage: ./scripts/check_backend.sh
set -euo pipefail
# Couleurs
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m' # No Color
# Ports par défaut (peuvent être surchargés par les vars d'env si besoin,
# mais ici on hardcode ou on utilise des vars explicites si définies)
API_URL="${VITE_API_BASE_URL:-http://localhost:8080/api/v1}"
WS_URL="${VITE_WS_BASE_URL:-ws://localhost:8081}"
STREAM_URL="${VITE_STREAM_URL:-http://localhost:8082}"
# Fonction de check HTTP avec retry
wait_for_url() {
local url="$1"
local name="$2"
local required="$3" # 1 = critical, 0 = optional
local max_attempts=30
local attempt=1
echo -n "⏳ Waiting for $name ($url)... "
while [ $attempt -le $max_attempts ]; do
if curl -s -f -m 1 "$url" > /dev/null 2>&1; then
echo -e "${GREEN}OK${NC}"
return 0
fi
echo -n "."
sleep 1
attempt=$((attempt + 1))
done
echo -e " ${RED}Timeout${NC}"
if [ "$required" -eq 1 ]; then
echo -e "${RED}$name failed to start after ${max_attempts}s [CRITIQUE]${NC}"
return 1
else
echo -e "${YELLOW}⚠️ $name failed to start ($url) [MODE DÉGRADÉ]${NC}"
return 0
fi
}
echo -e "${YELLOW}🔍 Vérification des services backend (Timeout: 30s)...${NC}"
EXIT_CODE=0
# 1. Backend API (Critique)
API_HOST_PORT=$(echo "$API_URL" | sed -E 's|/api/v1/?$||')
# Check both /health (root) or /api/v1/health depending on implementation
# We try the one derived from config first
if ! wait_for_url "$API_HOST_PORT/health" "Backend API" 1; then
EXIT_CODE=1
fi
# 2. Chat Server (Optionnel)
CHAT_HTTP_URL=$(echo "$WS_URL" | sed 's/^ws/http/')
wait_for_url "$CHAT_HTTP_URL/health" "Chat Server" 0 || true
# 3. Stream Server (Optionnel)
wait_for_url "$STREAM_URL/health" "Stream Server" 0 || true
echo ""
if [ $EXIT_CODE -eq 0 ]; then
echo -e "${GREEN}🚀 Tous les services critiques sont opérationnels.${NC}"
else
echo -e "${RED}🛑 Impossible de démarrer : services critiques manquants.${NC}"
fi
exit $EXIT_CODE