"""
Commande de management pour generer le dictionnaire de traductions

Usage:
    python manage.py generate_translations
    python manage.py generate_translations --format=json
    python manage.py generate_translations --format=js
    python manage.py generate_translations --format=all (default)
"""

from django.core.management.base import BaseCommand
from traduction.generators import generate_dictionary_json, generate_dictionary_js, regenerate_all


class Command(BaseCommand):
    help = 'Genere le fichier dictionnaire de traductions pour le frontend'

    def add_arguments(self, parser):
        parser.add_argument(
            '--format',
            type=str,
            default='all',
            choices=['json', 'js', 'all'],
            help='Format de sortie: json, js, ou all (defaut: all)'
        )

    def handle(self, *args, **options):
        format_type = options['format']

        self.stdout.write(self.style.NOTICE('Generation du dictionnaire de traductions...'))

        try:
            if format_type == 'json':
                path = generate_dictionary_json()
                self.stdout.write(self.style.SUCCESS(f'Fichier JSON genere: {path}'))

            elif format_type == 'js':
                path = generate_dictionary_js()
                self.stdout.write(self.style.SUCCESS(f'Fichier JS genere: {path}'))

            else:  # all
                paths = regenerate_all()
                self.stdout.write(self.style.SUCCESS(f'Fichier JSON genere: {paths["json"]}'))
                self.stdout.write(self.style.SUCCESS(f'Fichier JS genere: {paths["js"]}'))

            self.stdout.write(self.style.SUCCESS('Generation terminee avec succes!'))

        except Exception as e:
            self.stdout.write(self.style.ERROR(f'Erreur lors de la generation: {e}'))
            raise
