@echo off setlocal EnableExtensions EnableDelayedExpansion cd /d "%~dp0" set "APP_URL=http://127.0.0.1:5000" set "PYTHON_EXE=python" echo ================================================== echo [0/7] Python 버전 확인 echo ================================================== python --version >nul 2>&1 if errorlevel 1 ( py -3 --version >nul 2>&1 if errorlevel 1 ( echo [오류] Python 또는 py launcher를 찾지 못했습니다. echo Python 3.10 이상을 설치한 뒤 다시 시도하세요. pause exit /b 1 ) set "PYTHON_EXE=py -3" ) for /f "delims=" %%V in ('%PYTHON_EXE% -c "import sys; print(\"[정보] Python {}.{}.{}\".format(*sys.version_info[:3])); raise SystemExit(0 if sys.version_info >= (3, 10) else 1)" 2^>nul') do echo %%V if errorlevel 1 ( echo [경고] Python 3.10 미만입니다. 동작은 할 수 있지만 권장하지 않습니다. ) echo ================================================== echo [1/7] Git 최신 코드 가져오기 echo ================================================== if exist .git ( for /f "delims=" %%B in ('git branch --show-current 2^>nul') do set "BRANCH=%%B" if not defined BRANCH set "BRANCH=main" echo [정보] 현재 브랜치: !BRANCH! git pull --rebase --autostash origin !BRANCH! if errorlevel 1 ( echo [경고] git pull 실패. 원격 저장소 또는 네트워크를 확인하세요. echo 로컬 파일로 계속 진행합니다. ) else ( echo [완료] 최신 코드 반영 완료 ) ) else ( echo [경고] .git 폴더가 없습니다. git pull 없이 로컬 파일로 진행합니다. ) echo ================================================== echo [2/7] .venv 확인 echo ================================================== if not exist .venv\Scripts\python.exe ( echo [정보] .venv가 없어서 새로 생성합니다. %PYTHON_EXE% -m venv .venv if errorlevel 1 ( echo [오류] .venv 생성 실패 pause exit /b 1 ) ) else ( echo [완료] .venv가 이미 존재합니다. ) echo ================================================== echo [3/7] 가상환경 활성화 echo ================================================== call .venv\Scripts\activate.bat if errorlevel 1 ( echo [오류] 가상환경 활성화 실패 pause exit /b 1 ) echo [완료] 가상환경 활성화됨: !VIRTUAL_ENV! echo ================================================== echo [4/7] pip 업그레이드 echo ================================================== python -m pip install --upgrade pip if errorlevel 1 ( echo [오류] pip 업그레이드 실패 pause exit /b 1 ) echo ================================================== echo [5/7] 의존성 설치 echo ================================================== if not exist requirements.txt ( echo [오류] requirements.txt가 없습니다. pause exit /b 1 ) python -m pip install -r requirements.txt if errorlevel 1 ( echo [오류] requirements.txt 설치 실패 pause exit /b 1 ) echo [완료] 의존성 설치 완료 echo ================================================== echo [6/7] Playwright 브라우저 설치 echo ================================================== python -m playwright install if errorlevel 1 ( echo [경고] Playwright install이 실패했습니다. echo 이미 설치되어 있으면 계속 사용합니다. ) echo ================================================== echo [7/7] Flask 서버 실행 echo ================================================== if not exist main.py ( echo [오류] main.py를 찾을 수 없습니다. pause exit /b 1 ) start "BaseBall Flask Server" cmd /k "%PYTHON_EXE% main.py" echo [정보] 서버가 올라올 때까지 기다립니다... set "READY=0" for /l %%I in (1,1,60) do ( powershell -NoProfile -Command "try { $r = Invoke-WebRequest -Uri '%APP_URL%' -UseBasicParsing -TimeoutSec 2; if ($r.StatusCode -ge 200) { exit 0 } } catch { exit 1 }" >nul 2>&1 if not errorlevel 1 ( set "READY=1" goto :server_ready ) timeout /t 1 /nobreak >nul ) :server_ready if "!READY!"=="1" ( echo [완료] 서버가 시작되었습니다. 브라우저를 엽니다. start "" "%APP_URL%" ) else ( echo [경고] 서버 시작 확인 시간이 초과되었습니다. echo http://127.0.0.1:5000 를 직접 열어보세요. ) echo. echo 업데이트와 실행이 끝났습니다. echo 서버 창은 별도로 열려 있습니다. pause