Files
driving-academy/scripts/env-setup.bat
2025-10-26 23:39:49 -05:00

289 lines
6.9 KiB
Batchfile
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
@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