#!/usr/bin/env python3
"""
Script pour charger les variables d'environnement depuis un fichier .env
Utile pour configurer l'application lors du déploiement
"""
import os
import re

def load_dotenv(dotenv_path=".env"):
    """
    Charge les variables d'environnement depuis un fichier .env
    """
    if not os.path.exists(dotenv_path):
        print(f"Le fichier {dotenv_path} n'existe pas.")
        return False
    
    # Lecture du fichier .env
    with open(dotenv_path, "r") as f:
        content = f.read()
    
    # Compteur de variables chargées
    loaded_count = 0
    
    # Pattern pour extraire les variables (gère les commentaires et espaces)
    pattern = re.compile(r'^([A-Za-z_][A-Za-z0-9_]*)[ \t]*=[ \t]*(.*?)[ \t]*$', re.MULTILINE)
    
    # Recherche et définition des variables
    for match in pattern.finditer(content):
        key, value = match.groups()
        # Ignorer les lignes commentées
        if key.strip().startswith('#'):
            continue
        
        # Enlever les guillemets autour de la valeur si présents
        value = value.strip()
        if (value.startswith('"') and value.endswith('"')) or (value.startswith("'") and value.endswith("'")):
            value = value[1:-1]
        
        # Définir la variable d'environnement
        os.environ[key] = value
        loaded_count += 1
    
    print(f"Chargées {loaded_count} variables d'environnement depuis {dotenv_path}")
    return True

if __name__ == "__main__":
    # Chemin par défaut vers le fichier .env
    env_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), ".env")
    
    # Charger les variables
    if load_dotenv(env_path):
        print("Variables d'environnement chargées avec succès.")
        
        # Afficher les variables pour vérification (sans les valeurs sensibles)
        print("\nVariables configurées:")
        sensitive_keys = ['PASSWORD', 'SECRET', 'KEY', 'TOKEN']
        for key in sorted(os.environ.keys()):
            # Ne pas afficher les valeurs des variables sensibles
            is_sensitive = any(s in key.upper() for s in sensitive_keys)
            value = "********" if is_sensitive else os.environ[key]
            print(f"{key}={value}")
    else:
        print("Échec du chargement des variables d'environnement.")