veza/scripts/archive/generate-diagrams.sh
2025-12-12 21:34:34 -05:00

188 lines
5.4 KiB
Bash

#!/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 "$@"