File size: 4,475 Bytes
67f25fb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
@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