#!/bin/bash # Script de despliegue automatizado para HuggingFace Spaces # Osorno Runners - Sistema de Entrenamiento echo "========================================" echo "🏃 OSORNO RUNNERS - DEPLOY TO HUGGINGFACE" echo "========================================" echo "" # Colores RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color # Verificar que Git esté instalado if ! command -v git &> /dev/null; then echo -e "${RED}❌ Git no está instalado${NC}" echo "Instala Git desde: https://git-scm.com/" exit 1 fi echo -e "${GREEN}✅ Git encontrado${NC}" # Solicitar información al usuario echo "" echo "Necesito algunos datos para el despliegue:" echo "" read -p "Tu usuario de HuggingFace: " HF_USER read -p "Nombre del Space (ejemplo: osorno-runners): " SPACE_NAME if [ -z "$HF_USER" ] || [ -z "$SPACE_NAME" ]; then echo -e "${RED}❌ Usuario y nombre del Space son obligatorios${NC}" exit 1 fi REPO_URL="https://huggingface.co/spaces/$HF_USER/$SPACE_NAME" echo "" echo "Configuración:" echo " Usuario: $HF_USER" echo " Space: $SPACE_NAME" echo " URL: $REPO_URL" echo "" read -p "¿Es correcto? (s/n): " CONFIRM if [ "$CONFIRM" != "s" ] && [ "$CONFIRM" != "S" ]; then echo -e "${YELLOW}❌ Despliegue cancelado${NC}" exit 0 fi # Verificar archivos necesarios echo "" echo "Verificando archivos..." REQUIRED_FILES=("app.py" "index.html" "requirements.txt" "README.md") MISSING_FILES=() for file in "${REQUIRED_FILES[@]}"; do if [ ! -f "$file" ]; then MISSING_FILES+=("$file") fi done if [ ${#MISSING_FILES[@]} -ne 0 ]; then echo -e "${RED}❌ Archivos faltantes:${NC}" for file in "${MISSING_FILES[@]}"; do echo " - $file" done exit 1 fi echo -e "${GREEN}✅ Todos los archivos presentes${NC}" # Clonar el repositorio del Space echo "" echo "Clonando Space..." if [ -d "$SPACE_NAME" ]; then echo -e "${YELLOW}⚠️ El directorio $SPACE_NAME ya existe${NC}" read -p "¿Eliminarlo y continuar? (s/n): " DELETE_CONFIRM if [ "$DELETE_CONFIRM" == "s" ] || [ "$DELETE_CONFIRM" == "S" ]; then rm -rf "$SPACE_NAME" else echo -e "${YELLOW}❌ Despliegue cancelado${NC}" exit 0 fi fi git clone "$REPO_URL" "$SPACE_NAME" if [ $? -ne 0 ]; then echo -e "${RED}❌ Error al clonar el repositorio${NC}" echo "Asegúrate de:" echo " 1. Haber creado el Space en HuggingFace" echo " 2. Tener acceso al Space" echo " 3. Usar las credenciales correctas" exit 1 fi echo -e "${GREEN}✅ Space clonado${NC}" # Copiar archivos echo "" echo "Copiando archivos al Space..." cp app.py "$SPACE_NAME/" cp index.html "$SPACE_NAME/" cp requirements.txt "$SPACE_NAME/" cp README.md "$SPACE_NAME/" if [ -f ".gitignore" ]; then cp .gitignore "$SPACE_NAME/" fi echo -e "${GREEN}✅ Archivos copiados${NC}" # Commit y push echo "" echo "Haciendo deploy..." cd "$SPACE_NAME" git add . git commit -m "Deploy Osorno Runners v1.0" echo "" echo "Subiendo a HuggingFace..." echo "(Se te pedirán tus credenciales de HuggingFace)" echo "" git push if [ $? -ne 0 ]; then echo -e "${RED}❌ Error al hacer push${NC}" echo "Verifica tus credenciales de HuggingFace" exit 1 fi cd .. # Limpiar echo "" read -p "¿Eliminar directorio temporal $SPACE_NAME? (s/n): " CLEANUP if [ "$CLEANUP" == "s" ] || [ "$CLEANUP" == "S" ]; then rm -rf "$SPACE_NAME" echo -e "${GREEN}✅ Directorio limpiado${NC}" fi # Éxito echo "" echo "========================================" echo -e "${GREEN}🎉 ¡DESPLIEGUE EXITOSO!${NC}" echo "========================================" echo "" echo "Tu aplicación estará lista en 1-3 minutos en:" echo -e "${GREEN}$REPO_URL${NC}" echo "" echo "Credenciales de prueba:" echo " Usuario: USER / Password: 123" echo " Admin: ADMIN / Password: 123" echo "" echo "¡Felicidades! 🏃‍♂️" echo ""