#!/bin/bash
# Script pour lancer l'application GMPL en mode production
# Usage: ./run_production.sh

# Variables de configuration
PORT=${PORT:-5000}
WORKERS=${WORKERS:-3}
TIMEOUT=${TIMEOUT:-120}
LOG_LEVEL=${LOG_LEVEL:-info}

# Assurer que le script est exécutable
# chmod +x run_production.sh

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

# Fonction pour afficher des messages
log_message() {
    echo -e "${2}$(date '+%Y-%m-%d %H:%M:%S') - $1${NC}"
}

# Charger les variables d'environnement
if [ -f .env ]; then
    log_message "Chargement des variables d'environnement depuis .env" "${GREEN}"
    export $(grep -v '^#' .env | xargs)
else
    log_message "Fichier .env non trouvé. Utilisation des variables d'environnement actuelles." "${YELLOW}"
fi

# Vérifier la présence de Python
if ! command -v python3 &> /dev/null; then
    log_message "Python3 n'est pas installé. Veuillez l'installer avant de continuer." "${RED}"
    exit 1
fi

# Vérifier la présence de pip
if ! command -v pip3 &> /dev/null; then
    log_message "pip3 n'est pas installé. Veuillez l'installer avant de continuer." "${RED}"
    exit 1
fi

# Vérifier la présence de Gunicorn
if ! command -v gunicorn &> /dev/null; then
    log_message "Gunicorn n'est pas installé. Installation en cours..." "${YELLOW}"
    pip3 install gunicorn
    if [ $? -ne 0 ]; then
        log_message "Échec de l'installation de Gunicorn. Veuillez l'installer manuellement." "${RED}"
        exit 1
    fi
fi

# Créer le dossier uploads s'il n'existe pas
mkdir -p static/uploads/products static/uploads/services

# Démarrer l'application avec Gunicorn
log_message "Démarrage de l'application GMPL sur le port ${PORT} avec ${WORKERS} workers..." "${GREEN}"
gunicorn --bind 0.0.0.0:${PORT} \
         --workers ${WORKERS} \
         --timeout ${TIMEOUT} \
         --log-level ${LOG_LEVEL} \
         --access-logfile - \
         --error-logfile - \
         wsgi:app