Fix BOM breaking bin/*.bat and add early Graphviz check to --tosvg wrappers

setenv.bat (and activate_venv/get_cmd/install_py.bat) had a UTF-8 BOM,
which cmd.exe read as part of the @echo off line, breaking every bin
script that calls setenv.bat via `call`. Stripped the BOM.

material_flow.bat/.sh and tro_flow.bat/.sh now check up front whether
the Graphviz engine --tosvg needs (dot, or neato with --use-cords) is
resolvable, and print an early WARNUNG with fix instructions if not -
before the CSV is even parsed. The Python scripts still run and report
the same failure in detail if the SVG step is actually reached.
This commit is contained in:
2026-08-21 12:08:41 +02:00
parent e165beeaa8
commit fce0b8d9a1
9 changed files with 89 additions and 5 deletions
+1 -1
View File
@@ -1,4 +1,4 @@
@echo off
@echo off
REM ================================================================
REM SPS_SKEL - Python Virtual Environment aktivieren
REM ================================================================
+1 -1
View File
@@ -1,4 +1,4 @@
@echo off
@echo off
REM ================================================================
REM SPS_SKEL - Shell mit gesetzten Umgebungsvariablen oeffnen
REM ================================================================
+1 -1
View File
@@ -1,4 +1,4 @@
@echo off
@echo off
REM ================================================================
REM SPS_SKEL - Python Virtual Environment einrichten
REM ================================================================
+20
View File
@@ -24,6 +24,26 @@ REM Python-Interpreter bestimmen (py-Launcher bevorzugt, sonst python)
set "PY=py"
py --version >nul 2>&1 || set "PY=python"
REM Graphviz pruefen, wenn --tosvg SVG erzeugen soll (dot, bei --use-cords/
REM --use-coords neato) - nur ein frueher Hinweis; das eigentliche Skript
REM meldet denselben Fehler beim Rendern noch einmal im Detail.
set "GV_ENGINE=dot"
echo %*| findstr /i /c:"--use-cords" /c:"--use-coords" >nul && set "GV_ENGINE=neato"
echo %*| findstr /i /c:"--tosvg" >nul
if not errorlevel 1 (
where %GV_ENGINE%.exe >nul 2>&1
if errorlevel 1 (
set "GV_OK="
if /i "%GV_ENGINE%"=="dot" if defined GRAPHVIZ_DOT set "GV_OK=1"
if not defined GV_OK (
echo WARNUNG: Graphviz '%GV_ENGINE%' nicht im PATH gefunden - --tosvg wird vermutlich fehlschlagen.
echo Graphviz installieren ^(https://graphviz.org/download/^), den bin-Ordner
echo zum PATH hinzufuegen, oder GRAPHVIZ_DOT auf die dot.exe setzen ^(nur fuer 'dot'^).
echo.
)
)
)
"%PY%" "%SKEL_LIB%\material_flow.py" %*
set "RC=%ERRORLEVEL%"
+20
View File
@@ -28,4 +28,24 @@ fi
PY="python3"
command -v python3 >/dev/null 2>&1 || PY="python"
# Graphviz pruefen, wenn --tosvg SVG erzeugen soll (dot, bei --use-cords/
# --use-coords neato) - nur ein frueher Hinweis; das eigentliche Skript
# meldet denselben Fehler beim Rendern noch einmal im Detail.
case " $* " in
*" --tosvg "*)
GV_ENGINE="dot"
case " $* " in
*" --use-cords "*|*" --use-coords "*) GV_ENGINE="neato" ;;
esac
if ! command -v "$GV_ENGINE" >/dev/null 2>&1; then
if [ "$GV_ENGINE" != "dot" ] || [ -z "${GRAPHVIZ_DOT:-}" ]; then
echo "WARNUNG: Graphviz '$GV_ENGINE' nicht im PATH gefunden - --tosvg wird vermutlich fehlschlagen." >&2
echo " Graphviz installieren (https://graphviz.org/download/), PATH ergaenzen," >&2
echo " oder GRAPHVIZ_DOT auf die dot-Programmdatei setzen (nur fuer 'dot')." >&2
echo "" >&2
fi
fi
;;
esac
exec "$PY" "$SKEL_LIB/material_flow.py" "$@"
+1 -1
View File
@@ -1,4 +1,4 @@
@echo off
@echo off
REM ================================================================
REM SPS_SKEL - Umgebungsvariablen Setup
+20
View File
@@ -27,6 +27,26 @@ REM Python-Interpreter bestimmen (py-Launcher bevorzugt, sonst python)
set "PY=py"
py --version >nul 2>&1 || set "PY=python"
REM Graphviz pruefen, wenn --tosvg SVG erzeugen soll (dot, bei --use-cords/
REM --use-coords neato) - nur ein frueher Hinweis; das eigentliche Skript
REM meldet denselben Fehler beim Rendern noch einmal im Detail.
set "GV_ENGINE=dot"
echo %*| findstr /i /c:"--use-cords" /c:"--use-coords" >nul && set "GV_ENGINE=neato"
echo %*| findstr /i /c:"--tosvg" >nul
if not errorlevel 1 (
where %GV_ENGINE%.exe >nul 2>&1
if errorlevel 1 (
set "GV_OK="
if /i "%GV_ENGINE%"=="dot" if defined GRAPHVIZ_DOT set "GV_OK=1"
if not defined GV_OK (
echo WARNUNG: Graphviz '%GV_ENGINE%' nicht im PATH gefunden - --tosvg wird vermutlich fehlschlagen.
echo Graphviz installieren ^(https://graphviz.org/download/^), den bin-Ordner
echo zum PATH hinzufuegen, oder GRAPHVIZ_DOT auf die dot.exe setzen ^(nur fuer 'dot'^).
echo.
)
)
)
"%PY%" "%SKEL_LIB%\tro_flow.py" %*
set "RC=%ERRORLEVEL%"
+20
View File
@@ -31,4 +31,24 @@ fi
PY="python3"
command -v python3 >/dev/null 2>&1 || PY="python"
# Graphviz pruefen, wenn --tosvg SVG erzeugen soll (dot, bei --use-cords/
# --use-coords neato) - nur ein frueher Hinweis; das eigentliche Skript
# meldet denselben Fehler beim Rendern noch einmal im Detail.
case " $* " in
*" --tosvg "*)
GV_ENGINE="dot"
case " $* " in
*" --use-cords "*|*" --use-coords "*) GV_ENGINE="neato" ;;
esac
if ! command -v "$GV_ENGINE" >/dev/null 2>&1; then
if [ "$GV_ENGINE" != "dot" ] || [ -z "${GRAPHVIZ_DOT:-}" ]; then
echo "WARNUNG: Graphviz '$GV_ENGINE' nicht im PATH gefunden - --tosvg wird vermutlich fehlschlagen." >&2
echo " Graphviz installieren (https://graphviz.org/download/), PATH ergaenzen," >&2
echo " oder GRAPHVIZ_DOT auf die dot-Programmdatei setzen (nur fuer 'dot')." >&2
echo "" >&2
fi
fi
;;
esac
exec "$PY" "$SKEL_LIB/tro_flow.py" "$@"