@echo off setlocal EnableExtensions cd /d "%~dp0" chcp 65001 >nul 2>&1 set "DO_PAUSE=1" set "PYI_CLEAN=" if /i "%~1"=="nopause" set "DO_PAUSE=0" if /i "%~2"=="nopause" set "DO_PAUSE=0" if /i "%~1"=="clean" set "PYI_CLEAN=--clean" if /i "%~2"=="clean" set "PYI_CLEAN=--clean" echo === md2gost: быстрая сборка exe, onefile, шрифты и plantuml.jar === echo Каталог: %CD% echo Spec: md2gost.fast.spec echo Python: 3.11 ^(ищем, не берём первый python из PATH^) echo Кэш: build-fast\ без --clean, пока не передадите clean echo. call "%~dp0build-find-python311.bat" if errorlevel 1 goto :nopython if not defined PYEXE goto :nopython echo [1/4] Зависимости ... "%PYEXE%" -c "import PyInstaller, matplotlib, docx, marko, lxml, pygments, PIL, freetype, latex2mathml, requests, docxcompose, tkinterdnd2" 1>nul 2>nul if not errorlevel 1 goto :deps_ok echo Ставлю проект + PyInstaller + matplotlib + tkinterdnd2 ... "%PYEXE%" -m pip install -q -e . "pyinstaller>=6.0" "matplotlib>=3.7" "tkinterdnd2" if errorlevel 1 goto :pipfail :deps_ok 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" goto :nojar "%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 ) echo [3/4] PyInstaller onefile, кэш build-fast ... "%PYEXE%" -m PyInstaller --noconfirm %PYI_CLEAN% --workpath build-fast --distpath dist md2gost.fast.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 Повторно без clean — быстрее за счёт кэша Analysis. echo Полный пересбор: build-exe-fast.bat clean echo. if "%DO_PAUSE%"=="1" 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 :nojar echo Нет md2gost\vendor\plantuml.jar — portable exe без jar не собираем. goto :fail :pyifail echo PyInstaller завершился с ошибкой. goto :fail :noexe echo dist\md2gost.exe не появился. goto :fail :fail echo. echo Сборка не удалась. if "%DO_PAUSE%"=="1" pause exit /b 1