#!/bin/bash
# desc: Impone un visor PDF por defecto

EJECUTOR="$(whoami)"
[ "${EJECUTOR}" != "root" ] && \
echo "=> Error!! Debes ser root para configurar un visor PDF predeterminado." && \
exit 1

NOMBRE="${1}" # p.e.: Okular
FICHDESKTOP="${2}"

if [[ -f "${FICHDESKTOP}" && -x "/usr/bin/crudini" ]] ; then
    
    echo "=> Aplicación preferente para abrir PDFs: ${FICHDESKTOP}"
    # Por defecto creamos el mime para los esqueletos de los nuevos usuarios:
    # crudini creara la sección o parámetro en caso de no existir, asignando el valor indicado
    
    # Almacenaremos en un array los ficheros que se verán afectados:
    # 1) Skel: /etc/skel/.local/share/applications/mimeapps.list
    # 2) A nivel global: /usr/share/applications/mimeapps.list
    # 3) mimes personalizados definidos en los usuarios
    declare -a FICHEROS
    declare -a MODIFICADOS
    FICHEROS=( "/etc/skel/.local/share/applications/mimeapps.list" "/usr/share/applications/mimeapps.list" )
    for USUDIR in $(vx-home-usuarios-graficos) ; do
        FICH="${USUDIR}/.local/share/applications/mimeapps.list"
        if [ -f "${FICH}" ]; then
            FICHEROS+=("${FICH}")
        fi
    done
    
    for FICH in "${FICHEROS[@]}" ; do
        if [ -f "${FICH}" ] ; then
            CAMBIO="false"
            for SECCION in "Default Applications" "Added Associations" ; do
                VALOR="$(crudini --get "${FICH}" "${SECCION}" "application/pdf")"
                if [[ "${VALOR}" != "${FICHDESKTOP}" ]] ; then
                    crudini --set "${FICH}" "${SECCION}" "application/pdf" "${FICHDESKTOP}" && \
                    CAMBIO="true"
                fi
            done
            ${CAMBIO} && MODIFICADOS+=("${FICH}")
        fi
    done
    
    MENSAJE="=> ${NOMBRE} configurado como Visor PDF Predeterminado: "
    (( ${#MODIFICADOS[@]} == 0 )) && \
    MENSAJE+="Ya esta todo configurado" || \
    MENSAJE+="\n\tSecciones: \"Default Applications\" \"Added Associations\" Valor: \"application/pdf\"\n\tFicheros: ${MODIFICADOS[*]}"
    
    echo -e "${MENSAJE}"
fi

exit 0