@echo off setlocal EnableExtensions cd /d "%~dp0" chcp 65001 >nul 2>&1 echo === md2gost: сборка exe === echo Каталог: %CD% echo Python: 3.11 ^(ищем, не берём первый python из PATH^) echo. call "%~dp0build-find-python311.bat" if errorlevel 1 goto :nopython if not defined PYEXE goto :nopython echo [1/4] Зависимости проекта + PyInstaller + matplotlib ... "%PYEXE%" -m pip install -q -e . "pyinstaller>=6.0" "matplotlib>=3.7" "tkinterdnd2" if errorlevel 1 goto :pipfail if not exist "md2gost\Template.docx" goto :notemplate echo [2/4] PlantUML jar + Graphviz + Mermaid assets ... "%PYEXE%" scripts\fetch_plantuml.py if not exist "md2gost\vendor\plantuml.jar" ( echo Предупреждение: plantuml.jar нет — в exe UML пойдёт через kroki.io. ) "%PYEXE%" scripts\fetch_graphviz.py if not exist "md2gost\vendor\graphviz\bin\dot.exe" ( echo Предупреждение: Graphviz нет — в exe DFD пойдёт через kroki.io / PATH. ) if not exist "md2gost\diagrams\mermaid.min.js" ( "%PYEXE%" scripts\fetch_mermaid.py ) if not exist "md2gost\diagrams\mermaid.min.js" ( echo Предупреждение: mermaid.min.js нет — браузерный Mermaid в exe без assets. ) echo [3/4] PyInstaller, один файл, без консоли; CLI подцепит консоль сам ... "%PYEXE%" -m PyInstaller --noconfirm --clean md2gost.spec if errorlevel 1 goto :pyifail if not exist "dist\md2gost.exe" goto :noexe echo. echo [4/4] Готово: echo %CD%\dist\md2gost.exe echo. echo Двойной клик — GUI. Из консоли: md2gost.exe report.md -o report.docx echo. if /i "%~1"=="nopause" goto :eof pause exit /b 0 :nopython echo Нужен именно Python 3.11. Через uv без системного 3.11: build-exe-uvx.bat goto :fail :pipfail echo Не удалось поставить зависимости. goto :fail :notemplate echo Нет md2gost\Template.docx — сборка бессмысленна. goto :fail :pyifail echo PyInstaller завершился с ошибкой. goto :fail :noexe echo dist\md2gost.exe не появился. goto :fail :fail echo. echo Сборка не удалась. if /i not "%~1"=="nopause" pause exit /b 1