@echo off REM Universal Deployment Script for Windows REM Multi-Lingual Catalog Translator setlocal enabledelayedexpansion REM Configuration set PROJECT_NAME=multilingual-catalog-translator set DEFAULT_PORT=8501 set BACKEND_PORT=8001 echo ======================================== echo Multi-Lingual Catalog Translator echo Universal Deployment Pipeline echo ======================================== echo. REM Parse command line arguments set COMMAND=%1 if "%COMMAND%"=="" set COMMAND=start REM Check if Python is installed python --version >nul 2>&1 if errorlevel 1 ( echo [ERROR] Python not found. Please install Python 3.8+ echo Download from: https://www.python.org/downloads/ pause exit /b 1 ) echo [SUCCESS] Python found REM Main command handling if "%COMMAND%"=="start" goto :auto_deploy if "%COMMAND%"=="docker" goto :docker_deploy if "%COMMAND%"=="standalone" goto :standalone_deploy if "%COMMAND%"=="status" goto :show_status if "%COMMAND%"=="stop" goto :stop_services if "%COMMAND%"=="help" goto :show_help echo [ERROR] Unknown command: %COMMAND% goto :show_help :auto_deploy echo [INFO] Starting automatic deployment... docker --version >nul 2>&1 if errorlevel 1 ( echo [INFO] Docker not found, using standalone deployment goto :standalone_deploy ) else ( echo [INFO] Docker found, using Docker deployment goto :docker_deploy ) :docker_deploy echo [INFO] Deploying with Docker... docker-compose down docker-compose up --build -d if errorlevel 1 ( echo [ERROR] Docker deployment failed pause exit /b 1 ) echo [SUCCESS] Docker deployment completed echo [INFO] Frontend available at: http://localhost:8501 echo [INFO] Backend API available at: http://localhost:8001 goto :end :standalone_deploy echo [INFO] Deploying standalone application... REM Create virtual environment if it doesn't exist if not exist "venv" ( echo [INFO] Creating virtual environment... python -m venv venv ) REM Activate virtual environment call venv\Scripts\activate.bat REM Install requirements echo [INFO] Installing Python packages... pip install --upgrade pip pip install -r requirements.txt REM Start the application echo [INFO] Starting application... REM Check if full-stack deployment if exist "backend\main.py" ( echo [INFO] Starting backend server... start /b cmd /c "cd backend && python -m uvicorn main:app --host 0.0.0.0 --port %BACKEND_PORT%" REM Wait for backend to start timeout /t 3 /nobreak >nul echo [INFO] Starting frontend... cd frontend set API_BASE_URL=http://localhost:%BACKEND_PORT% streamlit run app.py --server.port %DEFAULT_PORT% --server.address 0.0.0.0 cd .. ) else ( REM Run standalone version streamlit run app.py --server.port %DEFAULT_PORT% --server.address 0.0.0.0 ) echo [SUCCESS] Standalone deployment completed goto :end :show_status echo [INFO] Checking deployment status... REM Check if processes are running (simplified for Windows) tasklist /FI "IMAGENAME eq python.exe" | find "python.exe" >nul if errorlevel 1 ( echo [WARNING] No Python processes found ) else ( echo [SUCCESS] Python processes are running ) REM Check Docker containers docker ps --filter "name=%PROJECT_NAME%" >nul 2>&1 if not errorlevel 1 ( echo [INFO] Docker containers: docker ps --filter "name=%PROJECT_NAME%" --format "table {{.Names}}\t{{.Status}}" ) goto :end :stop_services echo [INFO] Stopping services... REM Stop Docker containers docker-compose down >nul 2>&1 REM Kill Python processes (simplified) taskkill /F /IM python.exe >nul 2>&1 echo [SUCCESS] All services stopped goto :end :show_help echo Multi-Lingual Catalog Translator - Universal Deployment Script echo. echo Usage: deploy.bat [COMMAND] echo. echo Commands: echo start Start the application (default) echo docker Deploy using Docker echo standalone Deploy without Docker echo status Show deployment status echo stop Stop all services echo help Show this help message echo. echo Examples: echo deploy.bat # Quick start (auto-detect best method) echo deploy.bat docker # Deploy with Docker echo deploy.bat standalone # Deploy without Docker echo deploy.bat status # Check status echo deploy.bat stop # Stop all services goto :end :end if "%COMMAND%"=="help" ( pause ) else ( echo. echo Press any key to continue... pause >nul ) endlocal