#!/bin/bash
# Compila radio-player para Debian Bookworm arm64 usando Docker.
#
# Uso:
#   ./build-rpi3.sh                  # solo compila
#   ./build-rpi3.sh --push           # compila y copia al host indicado en $RPI3_HOST
#   RPI3_HOST=user@host ./build-rpi3.sh --push
#   ./build-rpi3.sh --push user@host # equivalente, pasando el host como argumento
set -e
cd "$(dirname "$0")"

IMAGE="gradio-builder:bookworm"
TARGET="target-bookworm"

# Host destino para --push. Configurable vía variable de entorno RPI3_HOST
# o como segundo argumento. Sin valor por defecto: el usuario debe definirlo.
RPI3="${2:-${RPI3_HOST:-}}"

# Usar docker directo si el usuario está en el grupo, sino sudo
if docker info &>/dev/null 2>&1; then
    DOCKER="docker"
else
    DOCKER="sudo docker"
fi

# Construir imagen si no existe
if ! $DOCKER image inspect "$IMAGE" &>/dev/null 2>&1; then
    echo "==> Construyendo imagen Docker $IMAGE ..."
    $DOCKER build -f docker/Dockerfile.bookworm -t "$IMAGE" .
    echo "==> Imagen lista."
fi

echo "==> Compilando para Debian Bookworm arm64 ..."
$DOCKER run --rm \
    -v "$PWD":/build \
    -v gradio-cargo-registry:/root/.cargo/registry \
    -v gradio-cargo-git:/root/.cargo/git \
    -e CARGO_TARGET_DIR=/build/$TARGET \
    "$IMAGE" \
    cargo build --release

# Corregir ownership si los archivos quedaron como root (sudo docker)
if [ -d "$TARGET" ] && [ "$(stat -c %U "$TARGET")" = "root" ]; then
    sudo chown -R "$(whoami)":"$(whoami)" "$TARGET"
fi

echo "==> Build completo. Binarios en $TARGET/release/"

# Copiar al host remoto si se pasa --push
if [[ "$1" == "--push" ]]; then
    if [[ -z "$RPI3" ]]; then
        echo "ERROR: --push requiere el host destino." >&2
        echo "  Pásalo como argumento:   ./build-rpi3.sh --push user@host" >&2
        echo "  O exporta la variable:   export RPI3_HOST=user@host" >&2
        exit 1
    fi
    echo "==> Copiando binarios a $RPI3 ..."
    ssh "$RPI3" "mkdir -p ~/radio-player/target/release"
    rsync -av --progress \
        "$TARGET/release/radio-player" \
        "$TARGET/release/comercial-scheduler" \
        "$TARGET/release/playlist-refill" \
        "$TARGET/release/gr-buscador" \
        "$TARGET/release/gr-playlist" \
        "$TARGET/release/gr-pautaje" \
        "$TARGET/release/gr-parrilla" \
        "$TARGET/release/gr-botonera" \
        "$TARGET/release/gr-visor" \
        "$TARGET/release/gr-reportes" \
        "$TARGET/release/gr-record" \
        "$RPI3":~/radio-player/target/release/ 2>/dev/null || true
    echo "==> Binarios instalados en RPi3."
fi
