From c581911f68b64f36c774c344d5abd060d50ab1e4 Mon Sep 17 00:00:00 2001 From: rambros3d Date: Mon, 30 Mar 2026 01:03:05 +0530 Subject: [PATCH] add windows build script --- build.bat | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 build.bat diff --git a/build.bat b/build.bat new file mode 100644 index 0000000..8702e45 --- /dev/null +++ b/build.bat @@ -0,0 +1,77 @@ +@echo off +setlocal enabledelayedexpansion +cd /d "%~dp0" + +echo --- Disco-Reaper Windows Build Script --- + +REM Check for venv +IF NOT EXIST "venv" ( + echo Creating virtual environment... + python -m venv venv + IF ERRORLEVEL 1 ( + echo Error: Failed to create virtual environment. + echo Ensure Python is installed and added to PATH. + IF NOT DEFINED AUTO_BUILD pause + exit /b 1 + ) +) + +echo Activating virtual environment... +call venv\Scripts\activate.bat + +REM Self-healing pip check +python -m pip --version >nul 2>&1 +IF ERRORLEVEL 1 ( + echo Warning: pip is missing or broken in venv. Attempting repair... + python -m ensurepip --default-pip + IF ERRORLEVEL 1 ( + echo Error: Failed to repair pip automatically. + echo Try recreating the venv: rmdir /s /q venv ^&^& python -m venv venv + IF NOT DEFINED AUTO_BUILD pause + exit /b 1 + ) +) + +echo Ensuring build dependencies are up to date... +REM python -m pip install --upgrade pip --quiet +python -m pip install pyinstaller --quiet +python -m pip install -r requirements.txt --quiet + +echo Cleaning previous build artifacts... +IF EXIST "build" rmdir /s /q build +IF EXIST "dist" rmdir /s /q dist + +echo Starting PyInstaller build... +REM Get git version tag +set "GIT_VERSION=Unknown" +for /f "tokens=*" %%i in ('git describe --tags --abbrev^=0 2^>nul') do set "GIT_VERSION=%%i" +echo Baking version: %GIT_VERSION% +echo __version__ = "%GIT_VERSION%"> src\core\_baked_version.py + +python -m PyInstaller --clean disco-reaper.spec +IF ERRORLEVEL 1 ( + echo Error: PyInstaller build failed. + del /f src\core\_baked_version.py 2>nul + IF NOT DEFINED AUTO_BUILD pause + exit /b 1 +) + +echo Cleaning up baked version file... +del /f src\core\_baked_version.py 2>nul + +echo Packaging release: disco-reaper-windows.zip... +cd dist +powershell -Command "Compress-Archive -Path 'DiscoReaper.exe' -DestinationPath 'disco-reaper-windows.zip' -Force" 2>nul +IF ERRORLEVEL 1 ( + echo Warning: Failed to create zip. Files are available in dist\ directory. +) ELSE ( + echo Package created: dist\disco-reaper-windows.zip +) +cd .. + +echo ----------------------------------- +echo Build complete! +echo Standalone executable: dist\DiscoReaper.exe +echo Release Package: dist\disco-reaper-windows.zip +echo --- +IF NOT DEFINED AUTO_BUILD pause