File size: 6,900 Bytes
22ca508
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
#!/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 "$@"