Files
baseball-automation/update_and_run.bat
2026-05-02 11:12:13 +09:00

143 lines
4.5 KiB
Batchfile

@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