#!/bin/bash # 🔧 Script de configuración para CLI tools # Configura Hugging Face CLI, Docker CLI y GitHub CLI set -e echo "🚀 Configurando CLI Tools para GPT Local..." # Colores para output 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 con colores print_status() { echo -e "${BLUE}[INFO]${NC} $1" } print_success() { echo -e "${GREEN}[SUCCESS]${NC} $1" } print_warning() { echo -e "${YELLOW}[WARNING]${NC} $1" } print_error() { echo -e "${RED}[ERROR]${NC} $1" } # 1. Instalar Hugging Face CLI install_huggingface_cli() { print_status "Instalando Hugging Face CLI..." if command -v huggingface-cli &> /dev/null; then print_success "Hugging Face CLI ya está instalado" else pip install --upgrade huggingface_hub print_success "Hugging Face CLI instalado" fi # Verificar instalación huggingface-cli --version || print_warning "Error verificando Hugging Face CLI" } # 2. Configurar Docker CLI (verificar instalación) check_docker() { print_status "Verificando Docker CLI..." if command -v docker &> /dev/null; then print_success "Docker CLI encontrado: $(docker --version)" # Verificar que Docker daemon esté ejecutándose if docker info &> /dev/null; then print_success "Docker daemon está ejecutándose" else print_warning "Docker CLI instalado pero daemon no está ejecutándose" print_status "Inicia Docker Desktop o el servicio Docker" fi else print_error "Docker CLI no encontrado" print_status "Instala Docker desde: https://docs.docker.com/get-docker/" exit 1 fi } # 3. Instalar GitHub CLI (opcional) install_github_cli() { print_status "Verificando GitHub CLI..." if command -v gh &> /dev/null; then print_success "GitHub CLI ya está instalado: $(gh --version | head -1)" else print_warning "GitHub CLI no encontrado" print_status "Instalando GitHub CLI..." # Detectar OS y instalar apropiadamente if [[ "$OSTYPE" == "darwin"* ]]; then # macOS if command -v brew &> /dev/null; then brew install gh print_success "GitHub CLI instalado via Homebrew" else print_warning "Homebrew no encontrado. Instala manualmente desde: https://cli.github.com/" fi elif [[ "$OSTYPE" == "linux-gnu"* ]]; then # Linux curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null sudo apt update sudo apt install gh print_success "GitHub CLI instalado" else print_warning "OS no soportado para instalación automática. Instala manualmente desde: https://cli.github.com/" fi fi } # 4. Configurar autenticación de Hugging Face setup_huggingface_auth() { print_status "Configurando autenticación de Hugging Face..." if [ -f "$HOME/.cache/huggingface/token" ]; then print_success "Token de Hugging Face ya configurado" else print_warning "Token de Hugging Face no encontrado" print_status "Para configurar tu token:" echo "1. Ve a: https://huggingface.co/settings/tokens" echo "2. Crea un nuevo token con permisos de lectura" echo "3. Ejecuta: huggingface-cli login" echo "4. O agrega el token al archivo .env: HUGGINGFACE_TOKEN=hf_tu_token" fi } # 5. Configurar autenticación de GitHub setup_github_auth() { print_status "Configurando autenticación de GitHub..." if command -v gh &> /dev/null; then if gh auth status &> /dev/null; then print_success "GitHub CLI ya está autenticado" else print_warning "GitHub CLI no está autenticado" print_status "Para autenticar ejecuta: gh auth login" fi else print_warning "GitHub CLI no instalado, saltando configuración" fi } # 6. Verificar Docker Compose check_docker_compose() { print_status "Verificando Docker Compose..." if command -v docker-compose &> /dev/null; then print_success "Docker Compose encontrado: $(docker-compose --version)" elif docker compose version &> /dev/null; then print_success "Docker Compose (plugin) encontrado: $(docker compose version)" else print_error "Docker Compose no encontrado" print_status "Instala Docker Compose desde: https://docs.docker.com/compose/install/" fi } # 7. Crear alias útiles create_aliases() { print_status "Creando aliases útiles..." cat >> ~/.bash_aliases 2>/dev/null << 'EOF' || true # GPT Local aliases alias gpt-chat="cd /path/to/gpt-local && python3 chat_terminal.py" alias gpt-web="cd /path/to/gpt-local && python3 main.py" alias gpt-test="cd /path/to/gpt-local && python3 test_gpt.py" alias gpt-docker="cd /path/to/gpt-local && docker-compose up --build" alias gpt-clean="cd /path/to/gpt-local && python3 utils.py clean" EOF # Para zsh cat >> ~/.zshrc 2>/dev/null << 'EOF' || true # GPT Local aliases alias gpt-chat="cd /path/to/gpt-local && python3 chat_terminal.py" alias gpt-web="cd /path/to/gpt-local && python3 main.py" alias gpt-test="cd /path/to/gpt-local && python3 test_gpt.py" alias gpt-docker="cd /path/to/gpt-local && docker-compose up --build" alias gpt-clean="cd /path/to/gpt-local && python3 utils.py clean" EOF print_success "Aliases creados (recarga tu terminal para usarlos)" } # Función principal main() { print_status "Iniciando configuración de CLI tools..." # Verificar Python if ! command -v python3 &> /dev/null; then print_error "Python 3 no encontrado. Instala Python 3.9+" exit 1 fi # Ejecutar configuraciones install_huggingface_cli check_docker check_docker_compose install_github_cli setup_huggingface_auth setup_github_auth create_aliases print_success "✅ Configuración de CLI tools completada!" print_status "Comandos disponibles:" echo " - huggingface-cli: Gestión de modelos HF" echo " - docker: Containerización" echo " - docker-compose: Orquestación" echo " - gh: GitHub CLI (opcional)" print_status "Próximos pasos:" echo "1. Configura tu token HF: huggingface-cli login" echo "2. Autentica GitHub (opcional): gh auth login" echo "3. Ejecuta: docker-compose up --build" } # Ejecutar script main "$@"