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:
@@ -1,4 +1,4 @@
|
|||||||
@echo off
|
@echo off
|
||||||
REM ================================================================
|
REM ================================================================
|
||||||
REM SPS_SKEL - Python Virtual Environment aktivieren
|
REM SPS_SKEL - Python Virtual Environment aktivieren
|
||||||
REM ================================================================
|
REM ================================================================
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
@echo off
|
@echo off
|
||||||
REM ================================================================
|
REM ================================================================
|
||||||
REM SPS_SKEL - Shell mit gesetzten Umgebungsvariablen oeffnen
|
REM SPS_SKEL - Shell mit gesetzten Umgebungsvariablen oeffnen
|
||||||
REM ================================================================
|
REM ================================================================
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
@echo off
|
@echo off
|
||||||
REM ================================================================
|
REM ================================================================
|
||||||
REM SPS_SKEL - Python Virtual Environment einrichten
|
REM SPS_SKEL - Python Virtual Environment einrichten
|
||||||
REM ================================================================
|
REM ================================================================
|
||||||
|
|||||||
@@ -24,6 +24,26 @@ REM Python-Interpreter bestimmen (py-Launcher bevorzugt, sonst python)
|
|||||||
set "PY=py"
|
set "PY=py"
|
||||||
py --version >nul 2>&1 || set "PY=python"
|
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" %*
|
"%PY%" "%SKEL_LIB%\material_flow.py" %*
|
||||||
set "RC=%ERRORLEVEL%"
|
set "RC=%ERRORLEVEL%"
|
||||||
|
|
||||||
|
|||||||
@@ -28,4 +28,24 @@ fi
|
|||||||
PY="python3"
|
PY="python3"
|
||||||
command -v python3 >/dev/null 2>&1 || PY="python"
|
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" "$@"
|
exec "$PY" "$SKEL_LIB/material_flow.py" "$@"
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
@echo off
|
@echo off
|
||||||
|
|
||||||
REM ================================================================
|
REM ================================================================
|
||||||
REM SPS_SKEL - Umgebungsvariablen Setup
|
REM SPS_SKEL - Umgebungsvariablen Setup
|
||||||
|
|||||||
@@ -27,6 +27,26 @@ REM Python-Interpreter bestimmen (py-Launcher bevorzugt, sonst python)
|
|||||||
set "PY=py"
|
set "PY=py"
|
||||||
py --version >nul 2>&1 || set "PY=python"
|
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" %*
|
"%PY%" "%SKEL_LIB%\tro_flow.py" %*
|
||||||
set "RC=%ERRORLEVEL%"
|
set "RC=%ERRORLEVEL%"
|
||||||
|
|
||||||
|
|||||||
@@ -31,4 +31,24 @@ fi
|
|||||||
PY="python3"
|
PY="python3"
|
||||||
command -v python3 >/dev/null 2>&1 || PY="python"
|
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" "$@"
|
exec "$PY" "$SKEL_LIB/tro_flow.py" "$@"
|
||||||
|
|||||||
@@ -98,7 +98,11 @@ Conventions shared by the CLI tools:
|
|||||||
`ezdxf>=1.4.0` for `tro_annotate.py` only) — run `bin\install_py.bat` once.
|
`ezdxf>=1.4.0` for `tro_annotate.py` only) — run `bin\install_py.bat` once.
|
||||||
- `--tosvg` needs Graphviz's `dot` (or `neato`, for `tro_flow.py
|
- `--tosvg` needs Graphviz's `dot` (or `neato`, for `tro_flow.py
|
||||||
--use-cords`) on `PATH`, or the `GRAPHVIZ_DOT` environment variable pointing
|
--use-cords`) on `PATH`, or the `GRAPHVIZ_DOT` environment variable pointing
|
||||||
at the `dot` executable.
|
at the `dot` executable. `bin/material_flow.bat`/`.sh` and `bin/tro_flow.bat`/`.sh`
|
||||||
|
check for the right engine up front when `--tosvg` is passed and print an early
|
||||||
|
`WARNUNG` if it's missing (`GRAPHVIZ_DOT` only covers `dot`, not `neato`) — this
|
||||||
|
is just a heads-up before the CSV is even parsed; the Python script still runs
|
||||||
|
and reports the same failure in detail (exit code `2`) if the SVG step is reached.
|
||||||
|
|
||||||
## 3. `material_flow.py` — material-flow graph of the mechanical layout
|
## 3. `material_flow.py` — material-flow graph of the mechanical layout
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user