#!/bin/bash
# ============================================================================
#  instalar-remoto.sh — Instala Astra con UN SOLO COMANDO
#
#  Interactivo:      curl -fsSL https://astra.nexus.flashhub.net/instalar-remoto.sh | sudo bash
#                    (muestra las versiones disponibles y pregunta cual instalar)
#  Sin preguntar:    ... | sudo bash -s -- --si            (instala la ultima)
#  Version concreta: ... | sudo ASTRA_VERSION=v1.2 bash -s --
#  Opciones:         ... | sudo bash -s -- --puerto 8080 (etc.)
# ============================================================================
set -e
BASE="${ASTRA_BASE:-https://astra.nexus.flashhub.net}"
AUTH="${ASTRA_AUTH:-}"
CURL_AUTH=()
[ -n "$AUTH" ] && CURL_AUTH=("${CURL_AUTH[@]}")
VERSION="${ASTRA_VERSION:-v1.7}"
NOASK=0
for a in "$@"; do [ "$a" = "--si" ] && NOASK=1; done
ARGS=()
for a in "$@"; do [ "$a" != "--si" ] && ARGS+=("$a"); done

# ---- Seleccion de version ----
if [ -z "$VERSION" ] && [ "$NOASK" = "0" ]; then
    IDX=$(curl -fsS "${CURL_AUTH[@]}" "$BASE/versiones/indice.txt" 2>/dev/null || true)
    TTYOK=0
    if [ -n "$IDX" ]; then
        if { exec 3</dev/tty; } 2>/dev/null; then TTYOK=1; fi
    fi
    if [ "$TTYOK" = "1" ]; then
        echo "Versiones disponibles:"
        n=0
        while IFS= read -r v; do
            [ -z "$v" ] && continue
            n=$((n+1))
            if [ "$n" = "1" ]; then
                echo "  [$n] $v   <- ultima estable (recomendada)"
            else
                echo "  [$n] $v"
            fi
            eval "OPC_$n=\"$v\""
        done <<< "$IDX"
        printf "Cual instalar? [Enter = 1]: "
        read -r SEL <&3 || SEL=""
        exec 3<&-
        case "$SEL" in
            "") SEL=1 ;;
            v*) VERSION="$SEL" ;;
            *[!0-9]*) SEL=1 ;;
        esac
        if [ -z "$VERSION" ]; then
            [ "$SEL" -ge 1 ] 2>/dev/null || SEL=1
            [ "$SEL" -le "$n" ] 2>/dev/null || SEL=1
            eval "VERSION=\$OPC_$SEL"
        fi
    fi
fi
if [ -n "$VERSION" ]; then SRC="$BASE/versiones/$VERSION"; else SRC="$BASE"; fi

TMP=$(mktemp -d)
trap 'rm -rf "$TMP"' EXIT
cd "$TMP"
VER_DISP=$(curl -fsS "${CURL_AUTH[@]}" "$SRC/VERSION" 2>/dev/null || echo "desconocida")
echo "[1/4] Version a instalar: $VER_DISP"
echo "      Origen: $SRC"
echo "[2/4] Descargando paquete..."
for f in astra instalar-astra.sh desinstalar-astra.sh astra.conf config-ejemplo.json GUIA-DE-INSTALACION.md verificar.sh INFORME_AUDITORIA.md CAMBIOS.txt CAMBIAR-PUERTO.md SHA256SUMS instalar-remoto.sh; do
    curl -fsS "${CURL_AUTH[@]}" -O "$SRC/$f"
done
echo "[3/4] Verificando integridad (SHA256)..."
sha256sum -c --status SHA256SUMS || { echo "[!] FALLO de integridad — descarga corrupta. Abortando."; exit 1; }
echo "      -> OK, paquete intacto"
chmod +x instalar-astra.sh
echo "[4/4] Ejecutando instalador..."
exec ./instalar-astra.sh "${ARGS[@]}"
