@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