289 lines
6.9 KiB
Batchfile
289 lines
6.9 KiB
Batchfile
@echo off
|
||
REM ====================================
|
||
REM SCRIPT DE CONFIGURACIÓN DE ENTORNO
|
||
REM Balotario Licencia A-I (Windows)
|
||
REM =============================
|
||
|
||
setlocal enabledelayedexpansion
|
||
|
||
REM Función para generar SECRET_KEY
|
||
:generate_secret_key
|
||
python -c "import secrets; print(secrets.token_hex(32))" 2>nul
|
||
if errorlevel 1 (
|
||
REM Fallback si Python no está disponible
|
||
echo %RANDOM%%RANDOM%%RANDOM%%RANDOM%
|
||
)
|
||
goto :eof
|
||
|
||
REM Función para mostrar header
|
||
:print_header
|
||
echo ======================================
|
||
echo 🌍 CONFIGURACIÓN DE ENTORNO
|
||
echo Balotario Licencia A-I
|
||
echo ======================================
|
||
echo.
|
||
goto :eof
|
||
|
||
REM Función para configurar desarrollo
|
||
:setup_development
|
||
echo ℹ️ Configurando entorno de desarrollo...
|
||
|
||
REM Generar SECRET_KEY
|
||
for /f %%i in ('python -c "import secrets; print(secrets.token_hex(32))" 2^>nul') do set SECRET_KEY=%%i
|
||
if "!SECRET_KEY!"=="" set SECRET_KEY=%RANDOM%%RANDOM%%RANDOM%%RANDOM%
|
||
|
||
REM Crear archivo .env
|
||
(
|
||
echo # ====================================
|
||
echo # CONFIGURACIÓN DE DESARROLLO
|
||
echo # Generado automáticamente: %date% %time%
|
||
echo # ====================================
|
||
echo.
|
||
echo # Configuración de Flask
|
||
echo SECRET_KEY=!SECRET_KEY!
|
||
echo FLASK_ENV=development
|
||
echo FLASK_CONFIG=development
|
||
echo FLASK_DEBUG=true
|
||
echo.
|
||
echo # Configuración del servidor
|
||
echo HOST=127.0.0.1
|
||
echo PORT=5000
|
||
echo.
|
||
echo # Configuración de Docker
|
||
echo DOCKER_CONTAINER=false
|
||
echo.
|
||
echo # Configuración de logging
|
||
echo LOG_LEVEL=DEBUG
|
||
echo AUTO_RELOAD=true
|
||
echo SHOW_DEBUG_TOOLBAR=false
|
||
echo.
|
||
echo # ====================================
|
||
echo # NOTAS:
|
||
echo # - Cambia SECRET_KEY antes de ir a producción
|
||
echo # - Revisa .env.sample para más opciones
|
||
echo # ====================================
|
||
) > .env
|
||
|
||
echo ✅ Configuración de desarrollo creada en .env
|
||
goto :eof
|
||
|
||
REM Función para configurar producción
|
||
:setup_production
|
||
echo ℹ️ Configurando entorno de producción...
|
||
|
||
REM Generar SECRET_KEY
|
||
for /f %%i in ('python -c "import secrets; print(secrets.token_hex(32))" 2^>nul') do set SECRET_KEY=%%i
|
||
if "!SECRET_KEY!"=="" set SECRET_KEY=%RANDOM%%RANDOM%%RANDOM%%RANDOM%
|
||
|
||
REM Crear archivo .env
|
||
(
|
||
echo # ====================================
|
||
echo # CONFIGURACIÓN DE PRODUCCIÓN
|
||
echo # Generado automáticamente: %date% %time%
|
||
echo # ====================================
|
||
echo.
|
||
echo # Configuración de Flask
|
||
echo SECRET_KEY=!SECRET_KEY!
|
||
echo FLASK_ENV=production
|
||
echo FLASK_CONFIG=production
|
||
echo FLASK_DEBUG=false
|
||
echo.
|
||
echo # Configuración del servidor
|
||
echo HOST=0.0.0.0
|
||
echo PORT=5000
|
||
echo.
|
||
echo # Configuración de Docker
|
||
echo DOCKER_CONTAINER=true
|
||
echo.
|
||
echo # Configuración de logging
|
||
echo LOG_LEVEL=INFO
|
||
echo.
|
||
echo # ====================================
|
||
echo # IMPORTANTE:
|
||
echo # - Guarda SECRET_KEY en lugar seguro
|
||
echo # - Revisa todas las configuraciones antes de desplegar
|
||
echo # ====================================
|
||
) > .env
|
||
|
||
echo ✅ Configuración de producción creada en .env
|
||
echo ⚠️ IMPORTANTE: Guarda la SECRET_KEY en un lugar seguro
|
||
goto :eof
|
||
|
||
REM Función para configurar Docker
|
||
:setup_docker
|
||
echo ℹ️ Configurando entorno para Docker...
|
||
|
||
REM Generar SECRET_KEY
|
||
for /f %%i in ('python -c "import secrets; print(secrets.token_hex(32))" 2^>nul') do set SECRET_KEY=%%i
|
||
if "!SECRET_KEY!"=="" set SECRET_KEY=%RANDOM%%RANDOM%%RANDOM%%RANDOM%
|
||
|
||
REM Crear archivo .env
|
||
(
|
||
echo # ====================================
|
||
echo # CONFIGURACIÓN PARA DOCKER
|
||
echo # Generado automáticamente: %date% %time%
|
||
echo # ====================================
|
||
echo.
|
||
echo # Configuración de Flask
|
||
echo SECRET_KEY=!SECRET_KEY!
|
||
echo FLASK_ENV=production
|
||
echo FLASK_CONFIG=production
|
||
echo FLASK_DEBUG=false
|
||
echo.
|
||
echo # Configuración del servidor
|
||
echo HOST=0.0.0.0
|
||
echo PORT=5000
|
||
echo.
|
||
echo # Configuración de Docker
|
||
echo DOCKER_CONTAINER=true
|
||
echo.
|
||
echo # Configuración de logging
|
||
echo LOG_LEVEL=INFO
|
||
echo.
|
||
echo # ====================================
|
||
echo # DOCKER NOTES:
|
||
echo # - Estas variables pueden ser sobrescritas en docker-compose.yml
|
||
echo # - Para desarrollo con Docker, cambia FLASK_ENV=development
|
||
echo # ====================================
|
||
) > .env
|
||
|
||
echo ✅ Configuración para Docker creada en .env
|
||
goto :eof
|
||
|
||
REM Función para validar configuración
|
||
:validate_env
|
||
echo ℹ️ Validando configuración...
|
||
|
||
if not exist ".env" (
|
||
echo ❌ Archivo .env no encontrado
|
||
exit /b 1
|
||
)
|
||
|
||
findstr /C:"SECRET_KEY=" .env >nul
|
||
if errorlevel 1 (
|
||
echo ❌ SECRET_KEY no encontrada en .env
|
||
exit /b 1
|
||
)
|
||
|
||
findstr /C:"FLASK_ENV=" .env >nul
|
||
if errorlevel 1 (
|
||
echo ❌ FLASK_ENV no encontrada en .env
|
||
exit /b 1
|
||
)
|
||
|
||
echo ✅ Configuración válida
|
||
echo.
|
||
echo ℹ️ Resumen de configuración:
|
||
echo ------------------------
|
||
for /f "tokens=1,2 delims==" %%a in ('findstr /R "^SECRET_KEY= ^FLASK_ENV= ^FLASK_DEBUG= ^HOST= ^PORT=" .env') do (
|
||
if "%%a"=="SECRET_KEY" (
|
||
echo %%a=***OCULTA***
|
||
) else (
|
||
echo %%a=%%b
|
||
)
|
||
)
|
||
goto :eof
|
||
|
||
REM Función para mostrar ayuda
|
||
:show_help
|
||
echo Uso: %~nx0 [COMANDO]
|
||
echo.
|
||
echo Comandos disponibles:
|
||
echo dev Configurar para desarrollo local
|
||
echo prod Configurar para producción
|
||
echo docker Configurar para Docker
|
||
echo validate Validar configuración actual
|
||
echo backup Crear backup de .env actual
|
||
echo restore Restaurar desde .env.sample
|
||
echo help Mostrar esta ayuda
|
||
echo.
|
||
echo Ejemplos:
|
||
echo %~nx0 dev # Configuración de desarrollo
|
||
echo %~nx0 prod # Configuración de producción
|
||
echo %~nx0 docker # Configuración para Docker
|
||
goto :eof
|
||
|
||
REM Función para crear backup
|
||
:backup_env
|
||
if exist ".env" (
|
||
set backup_file=.env.backup.%date:~-4%%date:~3,2%%date:~0,2%_%time:~0,2%%time:~3,2%%time:~6,2%
|
||
set backup_file=!backup_file: =0!
|
||
copy .env "!backup_file!" >nul
|
||
echo ✅ Backup creado: !backup_file!
|
||
) else (
|
||
echo ⚠️ No hay archivo .env para respaldar
|
||
)
|
||
goto :eof
|
||
|
||
REM Función para restaurar desde sample
|
||
:restore_env
|
||
if exist ".env.sample" (
|
||
copy .env.sample .env >nul
|
||
echo ✅ Configuración restaurada desde .env.sample
|
||
echo ⚠️ Recuerda personalizar los valores en .env
|
||
) else (
|
||
echo ❌ Archivo .env.sample no encontrado
|
||
exit /b 1
|
||
)
|
||
goto :eof
|
||
|
||
REM Función principal
|
||
:main
|
||
call :print_header
|
||
|
||
if "%1"=="" goto help
|
||
if "%1"=="dev" goto dev
|
||
if "%1"=="development" goto dev
|
||
if "%1"=="prod" goto prod
|
||
if "%1"=="production" goto prod
|
||
if "%1"=="docker" goto docker
|
||
if "%1"=="validate" goto validate
|
||
if "%1"=="check" goto validate
|
||
if "%1"=="backup" goto backup
|
||
if "%1"=="restore" goto restore
|
||
if "%1"=="help" goto help
|
||
if "%1"=="--help" goto help
|
||
if "%1"=="-h" goto help
|
||
|
||
echo ❌ Comando desconocido: %1
|
||
echo.
|
||
goto help
|
||
|
||
:dev
|
||
call :backup_env
|
||
call :setup_development
|
||
call :validate_env
|
||
goto end
|
||
|
||
:prod
|
||
call :backup_env
|
||
call :setup_production
|
||
call :validate_env
|
||
goto end
|
||
|
||
:docker
|
||
call :backup_env
|
||
call :setup_docker
|
||
call :validate_env
|
||
goto end
|
||
|
||
:validate
|
||
call :validate_env
|
||
goto end
|
||
|
||
:backup
|
||
call :backup_env
|
||
goto end
|
||
|
||
:restore
|
||
call :backup_env
|
||
call :restore_env
|
||
goto end
|
||
|
||
:help
|
||
call :show_help
|
||
goto end
|
||
|
||
:end
|
||
pause
|