188 lines
5.4 KiB
Bash
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 " "
|
|
echo " "
|
|
}
|
|
|
|
# Exécuter la fonction principale
|
|
main "$@"
|