Files
rag-tutor-documentation/convert_mermaid_to_img.ps1
2026-08-12 15:13:35 +02:00

64 lines
2.0 KiB
PowerShell

param(
[Parameter(Mandatory = $false, Position = 0)]
[string]$RelativePath = ".",
[Parameter(Mandatory = $false)]
[switch]$Recurse
)
$scriptDir = $PSScriptRoot
$cfgFile = Join-Path $scriptDir 'mermaid-config.json'
$targetDir = Join-Path $scriptDir $RelativePath
if (-not (Test-Path $targetDir)) {
Write-Error "Der Zielordner '$targetDir' existiert nicht."
exit 1
}
$mmdFiles = Get-ChildItem -Path $targetDir -Filter '*.mmd' -Recurse:$Recurse
if ($mmdFiles.Count -eq 0) {
Write-Host "Keine .mmd-Dateien in '$targetDir' gefunden." -ForegroundColor Yellow
exit 0
}
Write-Host "Verarbeite Ordner: $targetDir (Rekursiv: $Recurse)" -ForegroundColor Yellow
# --- 1. DATEIEN AUFLISTEN ---
Write-Host "`nFolgende $($mmdFiles.Count) Datei(en) werden verarbeitet:" -ForegroundColor Yellow
foreach ($file in $mmdFiles) {
# Zeigt den relativen Pfad ab dem Zielordner für bessere Lesbarkeit
$relativePath = Resolve-Path -Path $file.FullName -RelativeBasePath $targetDir
Write-Host " - $relativePath" -ForegroundColor Gray
}
Write-Host ""
# --- 2. NUTZERABFRAGE ---
$response = Read-Host "Möchtest du diese Dateien konvertieren? Bereits vorhandene Bild-Dateien werden überschrieben (J/N)"
# Prüft, ob der Nutzer mit 'j' oder 'ja' geantwortet hat (case-insensitive)
if ($response -notmatch '^[jJ](a)?$') {
Write-Host "Vorgang vom Benutzer abgebrochen." -ForegroundColor Red
exit 0
}
Write-Host "`nStarte Konvertierung..." -ForegroundColor Green
# --- 3. KONVERTIERUNGSDURCHLAUF ---
foreach ($file in $mmdFiles) {
Write-Host "Konvertiere $($file.Name) ($($file.DirectoryName))..." -ForegroundColor Cyan
$destSvg = Join-Path $file.DirectoryName "$($file.BaseName).svg"
$destPng = Join-Path $file.DirectoryName "$($file.BaseName).png"
if (Test-Path $cfgFile) {
mmdc -i $file.FullName -o $destSvg -c $cfgFile
} else {
mmdc -i $file.FullName -o $destSvg
}
mmdc -i $file.FullName -o $destPng -s 3
}
Write-Host "Fertig! Alle Diagramme wurden konvertiert." -ForegroundColor Green