veza/scripts/archive/stop-veza.sh
2025-12-12 21:34:34 -05:00

159 lines
No EOL
4 KiB
Bash
Executable file

#!/bin/bash
# Veza Full Stack Application Stop Script
# Version: 1.0.0
set -e
echo "🛑 Arrêt de l'application Veza..."
# Couleurs pour l'affichage
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Fonction pour afficher les messages
print_status() {
echo -e "${BLUE}[INFO]${NC} $1"
}
print_success() {
echo -e "${GREEN}[SUCCESS]${NC} $1"
}
print_warning() {
echo -e "${YELLOW}[WARNING]${NC} $1"
}
# Arrêter les processus locaux
stop_local_processes() {
print_status "Arrêt des processus locaux..."
# Arrêter les processus par PID si les fichiers existent
if [ -f "logs/backend.pid" ]; then
BACKEND_PID=$(cat logs/backend.pid)
kill $BACKEND_PID 2>/dev/null || true
rm -f logs/backend.pid
print_success "Backend arrêté"
fi
if [ -f "logs/frontend.pid" ]; then
FRONTEND_PID=$(cat logs/frontend.pid)
kill $FRONTEND_PID 2>/dev/null || true
rm -f logs/frontend.pid
print_success "Frontend arrêté"
fi
if [ -f "logs/chat-server.pid" ]; then
CHAT_PID=$(cat logs/chat-server.pid)
kill $CHAT_PID 2>/dev/null || true
rm -f logs/chat-server.pid
print_success "Chat server arrêté"
fi
if [ -f "logs/desktop.pid" ]; then
DESKTOP_PID=$(cat logs/desktop.pid)
kill $DESKTOP_PID 2>/dev/null || true
rm -f logs/desktop.pid
print_success "Desktop app arrêtée"
fi
# Arrêter les processus par nom
pkill -f "server" 2>/dev/null || true
pkill -f "vite" 2>/dev/null || true
pkill -f "npm run dev" 2>/dev/null || true
pkill -f "electron" 2>/dev/null || true
pkill -f "cargo" 2>/dev/null || true
print_success "Processus locaux arrêtés"
}
# Arrêter les conteneurs Docker
stop_docker_containers() {
print_status "Arrêt des conteneurs Docker..."
# Arrêter les conteneurs de développement
docker-compose -f veza-backend-api/docker-compose.local.yml down 2>/dev/null || true
# Arrêter les conteneurs de production
docker-compose -f docker-compose.production.yml down 2>/dev/null || true
# Arrêter tous les conteneurs Veza
docker ps -q --filter "name=veza" | xargs -r docker stop 2>/dev/null || true
print_success "Conteneurs Docker arrêtés"
}
# Nettoyer les ports
cleanup_ports() {
print_status "Nettoyage des ports..."
# Vérifier et nettoyer les ports utilisés
for port in 8080 5176 8081 5432 6379; do
if lsof -i :$port > /dev/null 2>&1; then
print_warning "Port $port encore utilisé, tentative de nettoyage..."
lsof -ti :$port | xargs -r kill -9 2>/dev/null || true
fi
done
print_success "Ports nettoyés"
}
# Afficher le statut final
show_final_status() {
echo ""
echo "📊 Statut final:"
echo "=================="
# Vérifier les processus
if pgrep -f "server" > /dev/null; then
echo -e "❌ Backend: Encore en cours"
else
echo -e "✅ Backend: Arrêté"
fi
if pgrep -f "vite" > /dev/null; then
echo -e "❌ Frontend: Encore en cours"
else
echo -e "✅ Frontend: Arrêté"
fi
if pgrep -f "electron" > /dev/null; then
echo -e "❌ Desktop: Encore en cours"
else
echo -e "✅ Desktop: Arrêté"
fi
# Vérifier les conteneurs Docker
if docker ps | grep -q "veza"; then
echo -e "❌ Conteneurs Docker: Encore en cours"
else
echo -e "✅ Conteneurs Docker: Arrêtés"
fi
echo ""
}
# Fonction principale
main() {
echo "🎵 Arrêt de l'application Veza"
echo "================================"
# Arrêter les services
stop_local_processes
stop_docker_containers
cleanup_ports
# Afficher le statut final
show_final_status
echo "🎉 Application Veza arrêtée avec succès!"
echo ""
echo "💡 Pour redémarrer: ./start-veza.sh"
echo ""
}
# Exécuter la fonction principale
main "$@"