#!/bin/bash

###############################################################################
# Script de création du package de déploiement
# Formation Manager Itinova
# 
# Ce script crée une archive complète prête à être transférée sur le serveur
###############################################################################

set -e  # Arrêter en cas d'erreur

# Couleurs pour les messages
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

# Configuration
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
PACKAGE_NAME="formation-manager-update-$(date +%Y%m%d_%H%M%S).tar.gz"
TEMP_DIR="/tmp/formation-manager-package"

echo -e "${BLUE}╔════════════════════════════════════════════════════════════╗${NC}"
echo -e "${BLUE}║  Création du package de déploiement                       ║${NC}"
echo -e "${BLUE}╚════════════════════════════════════════════════════════════╝${NC}"
echo ""

# Nettoyer le répertoire temporaire s'il existe
if [ -d "$TEMP_DIR" ]; then
    echo -e "${YELLOW}Nettoyage du répertoire temporaire...${NC}"
    rm -rf "$TEMP_DIR"
fi

# Créer le répertoire temporaire
echo -e "${YELLOW}Création du répertoire temporaire...${NC}"
mkdir -p "$TEMP_DIR"

# Copier les fichiers du projet
echo -e "${YELLOW}Copie des fichiers du projet...${NC}"
cd "$PROJECT_DIR"

# Copier tous les fichiers sauf les exclusions
cp -r . "$TEMP_DIR/"

# Supprimer les répertoires/fichiers à exclure
cd "$TEMP_DIR"
rm -rf node_modules .git .env .env.local dist build .next coverage .vscode .idea
find . -name '*.log' -delete
find . -name '.DS_Store' -delete
cd "$PROJECT_DIR"

echo -e "${GREEN}✓ Fichiers copiés${NC}"

# Créer un fichier README pour le package
echo -e "${YELLOW}Création du fichier README...${NC}"
cat > "$TEMP_DIR/README_DEPLOIEMENT.txt" << 'EOF'
╔════════════════════════════════════════════════════════════╗
║  Package de Mise à Jour - Formation Manager Itinova      ║
╚════════════════════════════════════════════════════════════╝

CONTENU DU PACKAGE
==================

1. deployment-scripts/
   - update-app.sh: Script de mise à jour automatique
   - backup-before-update.sh: Script de sauvegarde
   - GUIDE_MISE_A_JOUR.md: Guide complet de mise à jour

2. Fichiers de l'application
   - Tous les fichiers source nécessaires
   - Configuration package.json
   - Schéma de base de données

INSTALLATION RAPIDE
===================

1. Transférer ce package sur le serveur:
   scp formation-manager-update-*.tar.gz user@serveur:/tmp/

2. Se connecter au serveur:
   ssh user@serveur

3. Extraire le package:
   cd /tmp
   tar -xzf formation-manager-update-*.tar.gz
   cd formation-manager-itinova

4. Rendre les scripts exécutables:
   chmod +x deployment-scripts/*.sh

5. Lancer la mise à jour:
   sudo ./deployment-scripts/update-app.sh

IMPORTANT
=========

- Le script créera automatiquement une sauvegarde avant la mise à jour
- Le service sera arrêté pendant 5-10 minutes
- La configuration (.env) sera préservée
- Les migrations de base de données seront appliquées automatiquement

DOCUMENTATION
=============

Consultez le guide complet dans:
deployment-scripts/GUIDE_MISE_A_JOUR.md

SUPPORT
=======

En cas de problème:
1. Vérifier les logs: sudo journalctl -u formation-manager -f
2. Consulter le guide de dépannage dans GUIDE_MISE_A_JOUR.md
3. Restaurer une sauvegarde si nécessaire

Version: 36474438
Date: $(date)
EOF

echo -e "${GREEN}✓ README créé${NC}"

# Créer l'archive
echo -e "${YELLOW}Création de l'archive...${NC}"
cd /tmp
tar -czf "$PACKAGE_NAME" formation-manager-package/

# Déplacer l'archive dans le répertoire du projet
mv "$PACKAGE_NAME" "$PROJECT_DIR/"

# Nettoyer
rm -rf "$TEMP_DIR"

# Calculer la taille
PACKAGE_SIZE=$(du -sh "$PROJECT_DIR/$PACKAGE_NAME" | cut -f1)

echo ""
echo -e "${BLUE}╔════════════════════════════════════════════════════════════╗${NC}"
echo -e "${BLUE}║  ${GREEN}Package créé avec succès !${BLUE}                             ║${NC}"
echo -e "${BLUE}╚════════════════════════════════════════════════════════════╝${NC}"
echo ""
echo -e "${GREEN}Fichier:${NC} $PACKAGE_NAME"
echo -e "${GREEN}Emplacement:${NC} $PROJECT_DIR/$PACKAGE_NAME"
echo -e "${GREEN}Taille:${NC} $PACKAGE_SIZE"
echo ""
echo -e "${YELLOW}Prochaines étapes:${NC}"
echo "1. Transférer le package sur le serveur:"
echo "   ${BLUE}scp $PACKAGE_NAME user@serveur:/tmp/${NC}"
echo ""
echo "2. Suivre les instructions dans README_DEPLOIEMENT.txt"
echo ""
