# --------------------------------------------------------- # core.ps1 - BOOTSTRAPPER Y MENÚ PRINCIPAL (Todo en memoria) # --------------------------------------------------------- # 1. Variables Globales (Asegúrate de poner tu token real) $Global:GitLabToken = "glpat-_CjjGm3gO7XM1fubmcMBY286MQp1OmwyMTVzCw.01.1212nflx1" $Global:ProjectID = "80304083" $Global:TempSelectionFile = "$env:TEMP\aula_seleccion_paquetes.csv" # 2. Motor de conexión a GitLab function Get-GitLabItem { param ( [Parameter(Mandatory=$true)] [string]$FilePath ) # La API de GitLab requiere que la ruta del archivo esté codificada (ej. "scripts/_select.ps1" -> "scripts%2F_select.ps1") $EncodedPath = [uri]::EscapeDataString($FilePath) $Url = "https://gitlab.com/api/v4/projects/$Global:ProjectID/repository/files/$EncodedPath/raw?ref=main" $Headers = @{ "PRIVATE-TOKEN" = $Global:GitLabToken } try { $Response = Invoke-RestMethod -Uri $Url -Headers $Headers -ErrorAction Stop return $Response } catch { Write-Host "`n[ERROR] No se pudo descargar el archivo: $FilePath" -ForegroundColor Red Write-Host $_.Exception.Message -ForegroundColor DarkRed return $null } } # 3. Menú Principal function Show-MainMenu { $menuLoop = $true while ($menuLoop) { Clear-Host Write-Host "========================================" -ForegroundColor Cyan Write-Host " SISTEMA DE DESPLIEGUE - CORE" Write-Host "========================================" -ForegroundColor Cyan Write-Host "1. Instalación MANUAL (Selección de software)" Write-Host "2. Instalación BUNDLES" Write-Host "Q. Salir" Write-Host "----------------------------------------" -ForegroundColor Cyan $opcion = Read-Host "Selecciona una opción" switch ($opcion) { '1' { Write-Host "`nCargando módulo de selección desde GitLab..." -ForegroundColor Yellow $selectScriptContent = Get-GitLabItem -FilePath "scripts/_select.ps1" if ($selectScriptContent) { # Ejecutamos el script descargado directamente en memoria Invoke-Expression $selectScriptContent } else { Pause } } '2' { Write-Host "`n[INFO] Opción BUNDLES pendiente de desarrollo..." -ForegroundColor Yellow Start-Sleep -Seconds 2 } 'Q' { Write-Host "`nSaliendo..." -ForegroundColor Green $menuLoop = $false } default { Write-Host "`nOpción no válida. Inténtalo de nuevo." -ForegroundColor Red Start-Sleep -Seconds 1 } } } } # Iniciar el sistema Show-MainMenu