#!/bin/bash # ─── G Radio Client — instalador ───────────────────────────────────────────── set -e cd "$(dirname "$0")" BIN_DIR="$HOME/.local/bin" DESKTOP_DIR="$HOME/.local/share/applications" ICON="gr-client" # ── 1. Verificar que el binario fue compilado ───────────────────────────────── if [ ! -f "target/release/gr-client" ]; then echo "ERROR: target/release/gr-client no encontrado." echo " Compila el proyecto antes de instalar:" echo " cargo build --release" exit 1 fi # ── 2. Dependencias del sistema ─────────────────────────────────────────────── echo "==> Verificando dependencias..." if command -v apt &>/dev/null; then MISSING=() for pkg in libgtk-4-1 libglib2.0-0 ffmpeg mlocate; do if ! dpkg -l "$pkg" 2>/dev/null | grep -q "^ii"; then MISSING+=("$pkg") fi done if [ ${#MISSING[@]} -gt 0 ]; then echo " Instalando: ${MISSING[*]}" sudo apt install -y "${MISSING[@]}" else echo " Dependencias OK." fi elif command -v dnf &>/dev/null; then sudo dnf install -y gtk4 glib2 ffmpeg mlocate 2>/dev/null || true else echo " AVISO: gestor de paquetes no reconocido." echo " Instala manualmente: gtk4, ffmpeg, mlocate (o plocate)" fi # ── 3. Instalar binario ─────────────────────────────────────────────────────── echo "==> Instalando gr-client en $BIN_DIR..." mkdir -p "$BIN_DIR" cp target/release/gr-client "$BIN_DIR/gr-client" chmod +x "$BIN_DIR/gr-client" # ── 4. Crear directorios de configuración ──────────────────────────────────── echo "==> Preparando directorios de configuración..." mkdir -p "$HOME/.gradio/data" # para la base de datos de locate (locatedb) # ── 5. Entrada de menú de escritorio ───────────────────────────────────────── echo "==> Registrando en el menú de aplicaciones..." mkdir -p "$DESKTOP_DIR" cat > "$DESKTOP_DIR/gr-client.desktop" << DESKTOP [Desktop Entry] Type=Application Name=G Radio Client GenericName=Radio Remote Client Comment=Cliente remoto para G Radio Player Exec=$BIN_DIR/gr-client Icon=$ICON Categories=AudioVideo;Audio; Terminal=false StartupNotify=true DESKTOP update-desktop-database "$DESKTOP_DIR" 2>/dev/null || true # ── 6. Advertir si ~/.local/bin no está en PATH ─────────────────────────────── if [[ ":$PATH:" != *":$HOME/.local/bin:"* ]]; then echo "" echo " AVISO: $HOME/.local/bin no está en tu PATH." echo " Agrega esta línea a tu ~/.bashrc o ~/.zshrc:" echo "" echo ' export PATH="$HOME/.local/bin:$PATH"' echo "" fi echo "" echo "✅ Instalación completa." echo "" echo " Ejecutar: gr-client" echo " O desde menú: busca 'G Radio Client'" echo "" echo " Configuración: ~/.gradio/client_config.json" echo " Índice locate: ~/.gradio/data/locatedb (generado con ⟳ Índice en el buscador)" echo "" echo " Para desinstalar: ./uninstall.sh"