#!/bin/bash # Script de génération des diagrammes Mermaid # Génère les diagrammes à partir des fichiers .mmd set -e echo "🎨 Génération des diagrammes Mermaid..." # 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" } print_error() { echo -e "${RED}[ERROR]${NC} $1" } # Vérifier que Mermaid CLI est installé check_mermaid() { if ! command -v mmdc &> /dev/null; then print_error "Mermaid CLI n'est pas installé. Installation..." npm install -g @mermaid-js/mermaid-cli fi print_success "Mermaid CLI disponible" } # Créer le répertoire de sortie create_output_dir() { mkdir -p docs-assets/images print_success "Répertoire de sortie créé" } # Générer les diagrammes generate_diagrams() { local input_dir="docs-assets/mermaid" local output_dir="docs-assets/images" print_status "Génération des diagrammes depuis $input_dir..." # Architecture actuelle if [ -f "$input_dir/architecture-current.mmd" ]; then print_status "Génération de l'architecture actuelle..." mmdc -i "$input_dir/architecture-current.mmd" -o "$output_dir/architecture-current.png" -t dark print_success "Architecture actuelle générée" fi # Schéma de base de données if [ -f "$input_dir/database-schema.mmd" ]; then print_status "Génération du schéma de base de données..." mmdc -i "$input_dir/database-schema.mmd" -o "$output_dir/database-schema.png" -t dark print_success "Schéma de base de données généré" fi # Séquence d'authentification if [ -f "$input_dir/sequence-auth.mmd" ]; then print_status "Génération de la séquence d'authentification..." mmdc -i "$input_dir/sequence-auth.mmd" -o "$output_dir/sequence-auth.png" -t dark print_success "Séquence d'authentification générée" fi # Séquence de chat if [ -f "$input_dir/sequence-chat.mmd" ]; then print_status "Génération de la séquence de chat..." mmdc -i "$input_dir/sequence-chat.mmd" -o "$output_dir/sequence-chat.png" -t dark print_success "Séquence de chat générée" fi # Séquence de streaming if [ -f "$input_dir/sequence-streaming.mmd" ]; then print_status "Génération de la séquence de streaming..." mmdc -i "$input_dir/sequence-streaming.mmd" -o "$output_dir/sequence-streaming.png" -t dark print_success "Séquence de streaming générée" fi } # Générer les diagrammes en SVG generate_svg() { local input_dir="docs-assets/mermaid" local output_dir="docs-assets/images" print_status "Génération des diagrammes SVG..." for file in "$input_dir"/*.mmd; do if [ -f "$file" ]; then local basename=$(basename "$file" .mmd) print_status "Génération SVG de $basename..." mmdc -i "$file" -o "$output_dir/$basename.svg" -t dark fi done print_success "Diagrammes SVG générés" } # Générer les diagrammes en PDF generate_pdf() { local input_dir="docs-assets/mermaid" local output_dir="docs-assets/images" print_status "Génération des diagrammes PDF..." for file in "$input_dir"/*.mmd; do if [ -f "$file" ]; then local basename=$(basename "$file" .mmd) print_status "Génération PDF de $basename..." mmdc -i "$file" -o "$output_dir/$basename.pdf" -t dark fi done print_success "Diagrammes PDF générés" } # Nettoyer les anciens diagrammes cleanup() { print_status "Nettoyage des anciens diagrammes..." rm -f docs-assets/images/*.png rm -f docs-assets/images/*.svg rm -f docs-assets/images/*.pdf print_success "Anciens diagrammes supprimés" } # Fonction principale main() { echo "🎨 Veza Platform - Générateur de Diagrammes" echo "==========================================" # Vérifications check_mermaid create_output_dir # Options de génération case "${1:-all}" in "clean") cleanup ;; "png") generate_diagrams ;; "svg") generate_svg ;; "pdf") generate_pdf ;; "all") cleanup generate_diagrams generate_svg generate_pdf ;; *) echo "Usage: $0 [clean|png|svg|pdf|all]" echo " clean - Nettoyer les anciens diagrammes" echo " png - Générer les diagrammes PNG" echo " svg - Générer les diagrammes SVG" echo " pdf - Générer les diagrammes PDF" echo " all - Générer tous les formats (défaut)" exit 1 ;; esac print_success "Génération terminée !" echo "" echo "📁 Diagrammes générés dans : docs-assets/images/" echo "🎯 Formats disponibles : PNG, SVG, PDF" echo "" echo "📝 Pour utiliser dans la documentation :" echo " ![Architecture](images/architecture-current.png)" echo " ![Database](images/database-schema.png)" } # Exécuter la fonction principale main "$@"