-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathsetup_env.bat
More file actions
190 lines (160 loc) · 6.32 KB
/
Copy pathsetup_env.bat
File metadata and controls
190 lines (160 loc) · 6.32 KB
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
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
@echo off
setlocal ENABLEDELAYEDEXPANSION
REM Flask API Backbone - Environment Setup Script for Windows
REM =========================================================
REM This script sets up the development environment:
REM - Creates virtual environment
REM - Installs dependencies from requirements.txt
REM - Creates .env file with database configuration
echo ==========================================
echo Flask API Backbone - Environment Setup
echo ==========================================
echo.
REM Step 1: Check Python version
echo [INFO] Checking Python installation...
python --version >nul 2>&1
if %errorlevel% neq 0 (
echo [ERROR] Python is not installed or not in PATH
pause
exit /b 1
)
for /f "tokens=2" %%i in ('python --version 2^>^&1') do set PYTHON_VERSION=%%i
echo [SUCCESS] Python found: %PYTHON_VERSION%
echo.
REM Step 2: Create virtual environment
echo [INFO] Creating virtual environment...
if exist "venv" (
echo [WARNING] Virtual environment already exists. Removing old one...
rmdir /s /q venv
)
python -m venv venv
if %errorlevel% neq 0 (
echo [ERROR] Failed to create virtual environment
pause
exit /b 1
)
echo [SUCCESS] Virtual environment created successfully
echo.
REM Step 3: Install dependencies
echo [INFO] Installing dependencies from requirements.txt...
REM Upgrade pip first
python -m pip install --upgrade pip
if %errorlevel% neq 0 (
echo [ERROR] Failed to upgrade pip
pause
exit /b 1
)
REM Install packages using venv's pip
venv\Scripts\python.exe -m pip install --upgrade pip
venv\Scripts\pip.exe install -r requirements.txt
if %errorlevel% neq 0 (
echo [ERROR] Failed to install dependencies
pause
exit /b 1
)
echo [SUCCESS] Dependencies installed successfully
echo.
echo [INFO] Virtual environment is ready!
echo [INFO] To activate it, use one of these methods:
echo Method 1 (CMD/Batch): venv\Scripts\activate.bat
echo Method 2 (PowerShell): .\venv\Scripts\Activate.ps1
echo Method 3 (PowerShell - if blocked): Set-ExecutionPolicy RemoteSigned -Scope CurrentUser (run once)
echo.
REM Step 4: Get PostgreSQL configuration from user
echo [INFO] Configuring database settings...
echo.
echo Please enter your PostgreSQL database configuration:
echo.
REM Default values
set DB_HOST=localhost
set DB_PORT=5432
set DB_NAME=provision_it_v2
set DB_USER=username
set DB_PASSWORD=password
REM Get database host
set /p input_host="Database host [%DB_HOST%]: "
if not "!input_host!"=="" set DB_HOST=!input_host!
REM Get database port
set /p input_port="Database port [%DB_PORT%]: "
if not "!input_port!"=="" set DB_PORT=!input_port!
REM Get database name
set /p input_name="Database name [%DB_NAME%]: "
if not "!input_name!"=="" set DB_NAME=!input_name!
REM Get database user
set /p input_user="Database user [%DB_USER%]: "
if not "!input_user!"=="" set DB_USER=!input_user!
REM Get database password
set /p "input_password=Database password: "
if not "!input_password!"=="" set DB_PASSWORD=!input_password!
echo.
REM Step 5: Generate secret key
echo [INFO] Generating secret key...
python -c "import secrets; print(secrets.token_hex(32))" > temp_secret.txt 2>nul
if exist temp_secret.txt (
set /p SECRET_KEY=<temp_secret.txt
del temp_secret.txt
) else (
set SECRET_KEY=dev-secret-key-change-in-production
)
REM Step 6: Create .env file
echo [INFO] Creating .env file...
if exist ".env" (
echo [WARNING] .env file already exists. Backing up to .env.backup
copy .env .env.backup >nul
)
REM Create the .env file using a Python script to ensure UTF-8 encoding
echo import os > create_env_temp.py
echo db_host = os.environ.get('DB_HOST', 'localhost') >> create_env_temp.py
echo db_port = os.environ.get('DB_PORT', '5432') >> create_env_temp.py
echo db_name = os.environ.get('DB_NAME', 'provision_it_v2') >> create_env_temp.py
echo db_user = os.environ.get('DB_USER', 'username') >> create_env_temp.py
echo db_password = os.environ.get('DB_PASSWORD', 'password') >> create_env_temp.py
echo secret_key = os.environ.get('SECRET_KEY', 'dev-secret-key-change-in-production') >> create_env_temp.py
echo f = open('.env', 'w', encoding='utf-8') >> create_env_temp.py
echo f.write('# Flask API Backbone - Environment Configuration\n') >> create_env_temp.py
echo f.write('# ==============================================\n') >> create_env_temp.py
echo f.write('# Generated by setup script\n\n') >> create_env_temp.py
echo f.write('# Flask Configuration\n') >> create_env_temp.py
echo f.write('FLASK_ENV=development\n') >> create_env_temp.py
echo f.write('FLASK_DEBUG=true\n') >> create_env_temp.py
echo f.write('FLASK_HOST=127.0.0.1\n') >> create_env_temp.py
echo f.write('FLASK_PORT=5001\n\n') >> create_env_temp.py
echo f.write('# Security\n') >> create_env_temp.py
echo f.write(f'SECRET_KEY={secret_key}\n\n') >> create_env_temp.py
echo f.write('# Database Configuration\n') >> create_env_temp.py
echo f.write(f'DATABASE_URL=postgresql://{db_user}:{db_password}@{db_host}:{db_port}/{db_name}\n\n') >> create_env_temp.py
echo f.write('# For testing (optional)\n') >> create_env_temp.py
echo f.write(f'TEST_DATABASE_URL=postgresql://{db_user}:{db_password}@{db_host}:{db_port}/{db_name}_test\n') >> create_env_temp.py
echo f.close() >> create_env_temp.py
set DB_HOST=!DB_HOST!
set DB_PORT=!DB_PORT!
set DB_NAME=!DB_NAME!
set DB_USER=!DB_USER!
set DB_PASSWORD=!DB_PASSWORD!
set SECRET_KEY=!SECRET_KEY!
python create_env_temp.py
del create_env_temp.py
echo [SUCCESS] .env file created with database configuration
echo [INFO] Database URL: postgresql://!DB_USER!:***@!DB_HOST!:!DB_PORT!/!DB_NAME!
echo.
REM Final instructions
echo ==========================================
echo [SUCCESS] Environment setup completed successfully!
echo ==========================================
echo.
echo [INFO] Next steps:
echo 1. Ensure PostgreSQL is running and create the database if needed
echo 2. Initialize schema: psql -h !DB_HOST! -U !DB_USER! -d !DB_NAME! -f schema_postgres.sql
echo 3. Import data: psql -h !DB_HOST! -U !DB_USER! -d !DB_NAME! -f import_postgres.sql
echo 4. Activate virtual environment:
echo - In CMD: venv\Scripts\activate.bat
echo - In PowerShell: .\venv\Scripts\activate.bat
echo 5. Run the application: python run.py
echo.
echo [INFO] Health check endpoints (after running the app):
echo http://localhost:5001/health
echo http://localhost:5001/health/db
echo http://localhost:5001/health/detailed
echo.
pause
exit /b 0