127 lines
2.5 KiB
Batchfile
127 lines
2.5 KiB
Batchfile
@echo off
|
|
setlocal EnableExtensions
|
|
|
|
set "SCRIPT_DIR=%~dp0"
|
|
pushd "%SCRIPT_DIR%" >nul 2>&1
|
|
if errorlevel 1 (
|
|
echo [ERROR] Failed to switch to project directory:
|
|
echo %SCRIPT_DIR%
|
|
pause
|
|
exit /b 1
|
|
)
|
|
|
|
if not exist ".env" (
|
|
echo [ERROR] .env file was not found.
|
|
echo Copy .env.example to .env and fill in BOT_TOKEN, REMNAWAVE_* and DB_* values.
|
|
popd
|
|
pause
|
|
exit /b 1
|
|
)
|
|
|
|
call :find_python
|
|
if errorlevel 1 (
|
|
echo [ERROR] Python was not found in PATH.
|
|
echo Install Python 3.12+ and make sure ^`py^` or ^`python^` is available.
|
|
popd
|
|
pause
|
|
exit /b 1
|
|
)
|
|
|
|
call :ensure_venv
|
|
if errorlevel 1 (
|
|
popd
|
|
pause
|
|
exit /b 1
|
|
)
|
|
|
|
echo [INFO] Installing dependencies...
|
|
".venv\Scripts\python.exe" -m pip install -e .
|
|
if errorlevel 1 (
|
|
echo [ERROR] Failed to install dependencies
|
|
popd
|
|
pause
|
|
exit /b 1
|
|
)
|
|
|
|
echo [INFO] Starting bot...
|
|
".venv\Scripts\python.exe" main.py
|
|
set "EXIT_CODE=%ERRORLEVEL%"
|
|
|
|
if not "%EXIT_CODE%"=="0" (
|
|
echo [ERROR] Bot stopped with code %EXIT_CODE%
|
|
popd
|
|
pause
|
|
exit /b %EXIT_CODE%
|
|
)
|
|
|
|
popd
|
|
exit /b 0
|
|
|
|
:find_python
|
|
set "BOOTSTRAP_PY="
|
|
|
|
py -3 --version >nul 2>&1
|
|
if not errorlevel 1 (
|
|
set "BOOTSTRAP_PY=py -3"
|
|
echo [INFO] Using bootstrap interpreter: %BOOTSTRAP_PY%
|
|
exit /b 0
|
|
)
|
|
|
|
py --version >nul 2>&1
|
|
if not errorlevel 1 (
|
|
set "BOOTSTRAP_PY=py"
|
|
echo [INFO] Using bootstrap interpreter: %BOOTSTRAP_PY%
|
|
exit /b 0
|
|
)
|
|
|
|
python --version >nul 2>&1
|
|
if not errorlevel 1 (
|
|
set "BOOTSTRAP_PY=python"
|
|
echo [INFO] Using bootstrap interpreter: %BOOTSTRAP_PY%
|
|
exit /b 0
|
|
)
|
|
|
|
exit /b 1
|
|
|
|
:ensure_venv
|
|
set "RECREATE_VENV="
|
|
|
|
if not exist ".venv\Scripts\python.exe" (
|
|
set "RECREATE_VENV=1"
|
|
)
|
|
|
|
if not defined RECREATE_VENV (
|
|
".venv\Scripts\python.exe" -c "import sys; print(sys.executable)" >nul 2>&1
|
|
if errorlevel 1 (
|
|
set "RECREATE_VENV=1"
|
|
)
|
|
)
|
|
|
|
if defined RECREATE_VENV (
|
|
if exist ".venv" (
|
|
echo [WARN] Existing .venv is invalid or was created on another machine.
|
|
echo [INFO] Recreating virtual environment...
|
|
rmdir /s /q ".venv"
|
|
if exist ".venv" (
|
|
echo [ERROR] Failed to remove broken .venv
|
|
exit /b 1
|
|
)
|
|
) else (
|
|
echo [INFO] Creating virtual environment...
|
|
)
|
|
|
|
%BOOTSTRAP_PY% -m venv .venv
|
|
if errorlevel 1 (
|
|
echo [ERROR] Failed to create .venv
|
|
exit /b 1
|
|
)
|
|
)
|
|
|
|
".venv\Scripts\python.exe" -m pip --version >nul 2>&1
|
|
if errorlevel 1 (
|
|
echo [ERROR] Virtual environment exists, but pip is unavailable.
|
|
exit /b 1
|
|
)
|
|
|
|
exit /b 0
|