diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..101c28b --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,11 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "Export drawio to SVG", + "type": "shell", + "command": "./scripts/export-drawio.sh", + "problemMatcher": [] + } + ] +} \ No newline at end of file diff --git a/scripts/export-drawio.sh b/scripts/export-drawio.sh new file mode 100755 index 0000000..f075d01 --- /dev/null +++ b/scripts/export-drawio.sh @@ -0,0 +1,72 @@ +#!/bin/bash + +# Check for draw.io installation +DRAWIO_PATH="" +check_drawio_installed() { + if command -v drawio &>/dev/null; then + DRAWIO_PATH=$(command -v drawio) + return 0 # drawio via PATH + elif [[ -x "/Applications/draw.io.app/Contents/MacOS/draw.io" ]]; then + DRAWIO_PATH="/Applications/draw.io.app/Contents/MacOS/draw.io" + return 0 # For macOS check at default path + else + return 1 # not found + fi +} + +if ! check_drawio_installed; then + echo "Error: 'drawio' was not found. Make sure, that the draw.io cli is installed." + echo "https://www.diagrams.net/" + exit 1 +else + echo "Draw.io installation found at: $DRAWIO_PATH" +fi + +# Compare source (draw.io document) and exported file svg on mtime +needs_export() { + local drawio_file="$1" + local svg_file="$2" + + # If no file found, export + if [[ ! -f "$svg_file" ]]; then + return 0 + fi + + if [[ "$drawio_file" -nt "$svg_file" ]]; then + return 0 + else + return 1 + fi +} + +# If (re-)export is necessary export with drawio cli +export_file() { + local drawio_file="$1" + local svg_file="${drawio_file%.drawio}.svg" + + if needs_export "$drawio_file" "$svg_file"; then + echo "↻ Exporting: $drawio_file" + echo "$svg_file" + echo "$drawio_file" + + "$DRAWIO_PATH" --export --format svg --transparent --output "$svg_file" "$drawio_file" + else + echo "✓ Up-to-date: $drawio_file" + fi +} + +# Iterate over all .drawio files +main() { + # Source - https://stackoverflow.com/a/9612232 + # Posted by Kevin, modified by community. See post 'Timeline' for change history + # Retrieved 2026-03-09, License - CC BY-SA 4.0 + find . -name '*.drawio' -print0 | + while IFS= read -r -d '' line; do + export_file "$line" + done + + echo "✓ Exported all files" +} + +# Start script at entry point +main