#!/usr/bin/env bash
# -----------------------------------------------------------
# Script : instala-onlyoffice.sh
# Autor  : (tu nombre)
# Desc   : Instalación de ONLYOFFICE Desktop Editors en
#          Linux Mint (Ubuntu-based) con menú interactivo.
# -----------------------------------------------------------

# ---------- COLORES ----------
ROJO='\033[0;31m'
VERDE='\033[0;32m'
AMARILLO='\033[0;33m'
AZUL='\033[0;34m'
NC='\033[0m' # Sin color

# ---------- FUNCIONES AUXILIARES ----------
function pause(){
  read -r -s -n 1 -p "Presiona una tecla para continuar..."
  echo
}

function step_done(){
  echo -e "${VERDE}[✔] $1 finalizado.${NC}"
  echo
}

function step_start(){
  echo -e "${AZUL}[i] $1...${NC}"
}

function error_exit(){
  echo -e "${ROJO}[✖] $1${NC}"
  exit 1
}

# ---------- MENÚ ----------
clear
echo -e "${AMARILLO}=========================================="
echo " Instalador de ONLYOFFICE Desktop Editors "
echo "==========================================${NC}"
echo
echo "Selecciona el método de instalación:"
echo "1) Repositorio oficial (recomendado – actualizaciones automáticas)"
echo "2) Paquete .deb manual (sin repositorio)"
echo "3) Flatpak (universal, sandboxed)"
echo
read -rp "Opción [1-3]: " opcion

case $opcion in
  1)
    echo
    step_start "Añadiendo clave GPG del repositorio oficial"
    sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys CB2DE8E5 || error_exit "Fallo al añadir clave GPG"
    step_done "Clave GPG"

    step_start "Añadiendo entrada de repositorio"
    echo 'deb https://download.onlyoffice.com/repo/debian squeeze main' | sudo tee /etc/apt/sources.list.d/onlyoffice.list > /dev/null || error_exit "Fallo al añadir repositorio"
    step_done "Repositorio"

    step_start "Actualizando lista de paquetes"
    sudo apt update || error_exit "Fallo al actualizar APT"
    step_done "Actualización"

    step_start "Instalando ONLYOFFICE Desktop Editors"
    sudo apt install -y onlyoffice-desktopeditors || error_exit "Fallo al instalar paquete"
    step_done "Instalación"

    echo -e "${VERDE}[✔] ONLYOFFICE instalado vía repositorio oficial.${NC}"
    echo -e "${AZUL}Lánzalo con: desktopeditors${NC}"
    ;;

  2)
    echo
    step_start "Descargando paquete .deb oficial"
    wget -O /tmp/onlyoffice-desktopeditors_amd64.deb \
      http://download.onlyoffice.com/install/desktop/editors/linux/onlyoffice-desktopeditors_amd64.deb || error_exit "Fallo al descargar .deb"
    step_done "Descarga"

    step_start "Instalando paquete .deb"
    sudo dpkg -i /tmp/onlyoffice-desktopeditors_amd64.deb || true
    step_done "dpkg"

    step_start "Corrigiendo dependencias"
    sudo apt -f install -y || error_exit "Fallo al instalar dependencias"
    step_done "Dependencias"

    rm -f /tmp/onlyoffice-desktopeditors_amd64.deb
    echo -e "${VERDE}[✔] ONLYOFFICE instalado vía .deb manual.${NC}"
    echo -e "${AZUL}Lánzalo con: desktopeditors${NC}"
    ;;

  3)
    echo
    step_start "Comprobando/instalando Flatpak"
    if ! command -v flatpak &> /dev/null; then
      sudo apt install -y flatpak || error_exit "Fallo al instalar Flatpak"
    fi
    step_done "Flatpak"

    step_start "Añadiendo repositorio Flathub"
    flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo || error_exit "Fallo al añadir Flathub"
    step_done "Flathub"

    step_start "Instalando ONLYOFFICE vía Flatpak"
    flatpak install -y flathub org.onlyoffice.desktopeditors || error_exit "Fallo al instalar Flatpak"
    step_done "Instalación Flatpak"

    echo -e "${VERDE}[✔] ONLYOFFICE instalado vía Flatpak.${NC}"
    echo -e "${AZUL}Lánzalo con: flatpak run org.onlyoffice.desktopeditors${NC}"
    ;;

  *)
    error_exit "Opción no válida. Saliendo."
    ;;
esac

echo
echo -e "${AMARILLO}¡Instalación completada! Disfruta de ONLYOFFICE.${NC}"
pause
