- INSTALL.md: Complete installation guide in Spanish
- setup.sh: Automatic setup script for dependencies
- .env.example: Environment variables template
- Updated requirements.txt and .gitignore
164 lines
5.1 KiB
Bash
Executable file
164 lines
5.1 KiB
Bash
Executable file
#!/bin/bash
|
|
# setup.sh - Script de configuración automática para GestionTablets
|
|
# Este script instala las dependencias necesarias y configura el entorno
|
|
|
|
set -e # Salir en caso de error
|
|
|
|
# Colores para salida
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# Función para imprimir mensajes
|
|
print_status() {
|
|
echo -e "${BLUE}[INFO]${NC} $1"
|
|
}
|
|
|
|
print_success() {
|
|
echo -e "${GREEN}[OK]${NC} $1"
|
|
}
|
|
|
|
print_warning() {
|
|
echo -e "${YELLOW}[WARNING]${NC} $1"
|
|
}
|
|
|
|
print_error() {
|
|
echo -e "${RED}[ERROR]${NC} $1"
|
|
}
|
|
|
|
# Verificar que estamos en el directorio correcto
|
|
if [ ! -f "app.py" ]; then
|
|
print_error "No se encuentra app.py. Ejecuta este script desde el directorio raíz de GestionTablets."
|
|
exit 1
|
|
fi
|
|
|
|
# 1. Verificar Python 3.13+
|
|
print_status "Verificando versión de Python..."
|
|
PYTHON_VERSION=$(python3 --version 2>&1 | cut -d' ' -f2 | cut -d'.' -f1-2)
|
|
if [ "$PYTHON_VERSION" != "3.13" ]; then
|
|
print_error "Se requiere Python 3.13. Encontrado: $PYTHON_VERSION"
|
|
print_status "Instala Python 3.13 con: sudo apt install python3.13"
|
|
exit 1
|
|
fi
|
|
print_success "Python 3.13+ detectado"
|
|
|
|
# 2. Instalar uv si no está presente
|
|
print_status "Verificando uv..."
|
|
if ! command -v uv &> /dev/null; then
|
|
print_status "Instalando uv (Astral)..."
|
|
if ! curl -LsSf https://astral.sh/uv/install.sh | sh; then
|
|
print_error "No se pudo instalar uv. Verifica tu conexión a internet y que curl está instalado."
|
|
exit 1
|
|
fi
|
|
# Añadir uv al PATH para esta sesión
|
|
export PATH="$HOME/.local/bin:$PATH"
|
|
print_success "uv instalado correctamente"
|
|
else
|
|
print_success "uv ya está instalado"
|
|
fi
|
|
|
|
# Verificar versión de uv
|
|
UV_VERSION=$(uv --version 2>&1)
|
|
print_status "Versión de uv: $UV_VERSION"
|
|
|
|
# 3. Crear entorno virtual
|
|
print_status "Creando entorno virtual..."
|
|
if [ -d ".venv" ]; then
|
|
print_warning "El entorno virtual .venv ya existe. Usando el existente."
|
|
else
|
|
if ! uv venv .venv; then
|
|
print_error "No se pudo crear el entorno virtual"
|
|
exit 1
|
|
fi
|
|
print_success "Entorno virtual creado"
|
|
fi
|
|
|
|
# Activar el entorno virtual
|
|
print_status "Activando entorno virtual..."
|
|
source .venv/bin/activate
|
|
|
|
# 4. Instalar dependencias
|
|
print_status "Instalando dependencias desde requirements.txt..."
|
|
if [ -f "requirements.txt" ]; then
|
|
if ! uv pip install -r requirements.txt; then
|
|
print_error "No se pudieron instalar las dependencias"
|
|
exit 1
|
|
fi
|
|
print_success "Dependencias instaladas"
|
|
else
|
|
print_error "No se encuentra requirements.txt"
|
|
exit 1
|
|
fi
|
|
|
|
# 5. Inicializar base de datos
|
|
print_status "Inicializando base de datos..."
|
|
if [ ! -f "tablets.db" ]; then
|
|
if python3 -c "from app import init_db; init_db(); print('Base de datos inicializada')" 2>&1; then
|
|
print_success "Base de datos inicializada"
|
|
else
|
|
print_warning "No se pudo inicializar la base de datos automáticamente"
|
|
print_status "Puedes inicializarla manualmente con: python3 -c \"from app import init_db; init_db()\""
|
|
fi
|
|
else
|
|
print_warning "tablets.db ya existe. No se ha sobrescrito."
|
|
fi
|
|
|
|
# 6. Configurar variables de entorno
|
|
print_status "Configurando variables de entorno..."
|
|
if [ ! -f ".env" ]; then
|
|
# Generar clave secreta
|
|
SECRET_KEY=$(openssl rand -hex 32 2>/dev/null || python3 -c "import secrets; print(secrets.token_hex(32))" 2>/dev/null || echo "cambiar_esta_clave_manualmente")
|
|
|
|
cat > .env << EOF
|
|
# Configuración de Flask
|
|
FLASK_APP=app.py
|
|
FLASK_ENV=development
|
|
|
|
# Clave secreta (¡CÁMBIALA EN PRODUCCIÓN!)
|
|
SECRET_KEY=$SECRET_KEY
|
|
|
|
# Base de datos
|
|
DATABASE=tablets.db
|
|
EOF
|
|
print_success "Archivo .env creado con configuración básica"
|
|
print_warning "⚠️ REVISA el archivo .env y cambia la SECRET_KEY antes de usar en producción"
|
|
else
|
|
print_warning ".env ya existe. No se ha sobrescrito."
|
|
fi
|
|
|
|
# 7. Crear .env.example si no existe
|
|
if [ ! -f ".env.example" ]; then
|
|
cp .env .env.example 2>/dev/null || true
|
|
print_status "Creado .env.example"
|
|
fi
|
|
|
|
# 8. Verificar instalación
|
|
print_status "Verificando instalación..."
|
|
print_status "Comprobando importación de Flask..."
|
|
python3 -c "import flask; print(f'Flask versión: {flask.__version__}')" 2>&1
|
|
|
|
print_status "Comprobando importación de la aplicación..."
|
|
python3 -c "import app; print('Aplicación importada correctamente')" 2>&1
|
|
|
|
# 9. Instrucciones finales
|
|
echo ""
|
|
print_success "=========================================="
|
|
print_success "¡Configuración completada con éxito!"
|
|
print_success "=========================================="
|
|
echo ""
|
|
print_status "Para ejecutar la aplicación en desarrollo:"
|
|
echo " 1. Activa el entorno virtual: source .venv/bin/activate"
|
|
echo " 2. Ejecuta la aplicación: python3 app.py"
|
|
echo ""
|
|
print_status "La aplicación estará disponible en: http://localhost:5000"
|
|
echo ""
|
|
print_status "Para producción, usa Waitress:"
|
|
echo " waitress-serve --port=8080 app:app"
|
|
echo ""
|
|
print_warning "⚠️ NO OLVIDES:"
|
|
print_warning " - Revisar y cambiar SECRET_KEY en .env"
|
|
print_warning " - Configurar FLASK_ENV=production para producción"
|
|
print_warning " - Hacer backup de tablets.db regularmente"
|
|
echo ""
|