#!/bin/bash

# last-act: arturo@2022-3-17 arturo@2020-4-30
# Instala la extension o extensiones de libreoffice pasadas como parámetro
# Debe indicarse rutas absolutas o relativas del archivo: *.oxt
# p.e. FICH="/usr/share/vitalinux/conf-centro/libreoffice-extensiones/es_ANY.oxt"

FICHFUNCS="/usr/bin/vx-funcs-bash"
[ -f "${FICHFUNCS}" ] && . "${FICHFUNCS}" "null"

# Comprobamos que el usuario root es que quiere ejecutar el script:
! vx-check_user_root && exit 1
MY_EXTENSIONS_TO_INSTALL_DIR="/usr/share/vitalinux/libreoffice-extensiones"
EXTENSION_DIR_GENERAL="/usr/lib/libreoffice/share/extensions"

# Mostramos la ayuda si se pasa como parámetro -h o --help:
AYUDA="Script encargado de instalar extensiones de Libreoffice para todos los usuarios: ${EXTENSION_DIR_GENERAL}."
AYUDA+="\nEn caso deno indicar ningún parámetro se instalarán las extensiones que se encuentren en ${MY_EXTENSIONS_TO_INSTALL_DIR}."
AYUDA+="\nSe puede pasar como parámetros directamente la lista de extensiones OXT a instalar para todos los usuarios."
EJEMPLOS=("${0} # Se instalarán las extensiones OXT encontradas en ${MY_EXTENSIONS_TO_INSTALL_DIR}")
EJEMPLOS+=("${0} \"/home/docente/Documentos/TexMaths-0-v2.49.oxt\" \"/tmp/b6a670bb_writer2latex.oxt\"# Instala las extensiones indicadas")
vx-check_need_help "${1}" && \
vx-show_help "${0}" "${AYUDA}" "${EJEMPLOS[@]}" && \
exit 0

# Preparamos la auditoria del servicio:
LOG="vx-libreoffice-extensiones.log"
vx-log_xsession -o "${LOG}"

[ -z "${1}" ] && \
echo -e "=> Al no pasar parámetros se instalarán las extensiones localizadas en ${MY_EXTENSIONS_TO_INSTALL_DIR}
Para saber sobre el uso del script haz uso de: ${0} -h|--help" || \
MY_EXTENSIONS_TO_INSTALL_DIR="null"

# ------------------------------------------------------------------------------
# LibreOffice Extensions - bundle install (for all users) just by unzipping!!!
# ------------------------------------------------------------------------------
function vx-libreoffice-extension-install-check() {
    EXT_FILE="${1}"
    if [ -f "${EXT_FILE}" ]; then
        # Comprobamos que se trata de una extensión válida de libreoffice:
        MIME_TYPE_EXTENSION="application/vnd.openofficeorg.extension"
        ! [[ "$(vx-mime-type "${EXT_FILE}")" =~ ${MIME_TYPE_EXTENSION} ]] && \
        vx-colorear_echo "rojo" "=> No es una extensión de libreoffcie válida: ${EXT_FILE} (Debería ser: ${MIME_TYPE_EXTENSION})" && \
        return 1
        # Instalamos la extensión de libreoffice
        vx-colorear_echo "azul" "=> Vamos a instalar la extensión de Libreoffice: ${EXT_FILE}"
        LO_EXTENSION=$(basename --suffix=.oxt "${EXT_FILE}")
        if [ -e "${EXTENSION_DIR_GENERAL}/${LO_EXTENSION}" ]; then
            # echo "  Replacing ${LO_EXTENSION} extension"
            # rm -rf "${EXTENSION_DIR_GENERAL}/${LO_EXTENSION}"
            vx-colorear_echo "azul" "=> La Extension de Libreoffice ${LO_EXTENSION} ya esta instalada"
            return 0
        else
            vx-colorear_echo "verde" "=> Añadiendo Extensión de Libreoffice: ${LO_EXTENSION}"
        fi
        unzip -q -d "${EXTENSION_DIR_GENERAL}/${LO_EXTENSION}" "${EXT_FILE}" # "${MY_EXTENSIONS_TO_INSTALL_DIR}/${LO_EXTENSION}.oxt"
    else
        vx-colorear_echo "rojo" "=> No se encuentra el archivo/extensión a instalar: ${EXT_FILE}"
        return 1
    fi
    return 0
}

function vx-libreoffice-extensiones-install-default() {
    [[ ! -d "${MY_EXTENSIONS_TO_INSTALL_DIR}" ]] && \
    vx-colorear_echo "rojo" "=> No existe el directorio donde encontrar extensiones a instalar: ${MY_EXTENSIONS_TO_INSTALL_DIR}" && \
    return 1
    if [[ -x "${EXTENSION_DIR_GENERAL}/" ]] ; then
        for EXT_FILE in "${MY_EXTENSIONS_TO_INSTALL_DIR}/"*.oxt ; do
            vx-libreoffice-extension-install-check "${EXT_FILE}" || vx-colorear_echo "rojo" "Problemas con ${EXT_FILE}"
        done
    else
        vx-colorear_echo "rojo" "=> No se puede acceder al directorio destino de las extensiones: ${EXTENSION_DIR_GENERAL}"
    fi
}

function vx-libreoffice-extensiones-install-lista() {
    until [ -z "${1}" ] ; do
        EXT_FILE="$(vx-obtener_ruta_absoluta "${1}")" && \
        vx-libreoffice-extension-install-check "${EXT_FILE}" \
        || vx-colorear_echo "rojo" "Problemas con ${EXT_FILE}"
        shift
    done
}

if [[ "${MY_EXTENSIONS_TO_INSTALL_DIR}" != "null" ]] ; then
    vx-libreoffice-extensiones-install-default || vx-colorear_echo "rojo" "ERROR: Problemas al instalar las extensiones"
else
    vx-libreoffice-extensiones-install-lista "${@}" || vx-colorear_echo "rojo" "ERROR: Problemas al instalar las extensiones"
fi

exit 0

# Forma anterior:

until [ -z "${1}" ] ; do
    FICH="${1}"
    DIR="$(vx-home-usuario-grafico)/.config/libreoffice/4/user"
    EXTENSION="$(basename "${FICH}")"
    if [[ -d "${DIR}" ]] ; then
        if [[ -f "${FICH}" ]] ; then
            if ! ( unopkg list --shared 2> /dev/null | grep -q "${EXTENSION}" ) ; then
                unopkg add -f -s --shared "${FICH}" &> /dev/null
                echo "=> Se ha instalado la extensión de Libreoffice: ${EXTENSION}"
            else
                echo "=> Ya esta instalada la extensión de Libreoffice: ${EXTENSION}"
            fi
        else
            echo "=> ¡¡Problemas!! La ruta a la extensión a instalar no existe: ${FICH}"
        fi
    else
        echo "=> No se puede instalar la extensión ${EXTENSION} ya que $(vx-usuario-grafico) no ha iniciado todavía Libreoffice ..."
        exit 1
    fi
    shift
done
exit 0