#!/bin/bash

mensaje() {
    echo -e "=> $(date): ${1}"
}

uso() {
    MENSAJE="Debes pasar dos o más parámetros al script:"
    MENSAJE+="\n1) --install|--remove"
    MENSAJE+="\n2,3,...) Extensiones a instalar o desinstalar"
    MENSAJE+="\nEj. vx-chrome-extensiones --install ARCWELDER APKWELDING UBLOCK"
    MENSAJE+="\nEj. vx-chrome-extensiones --remove pkmbjddkmnknjdhfjiekjoniilcjkfpo"
    mensaje "${MENSAJE}"
}

MENSAJE="Debes ser el Root para configurar las extensiones de Chrome ..."
[[ "$(whoami)" != "root" ]] && echo "${MENSAJE}" && exit 1

# Comprobamos que al menos se pasan 2 parámetros al script:
(( ${#} < 2 )) && uso && exit 1

OPCION="${1}"
! [[ "${OPCION}" =~ --install|--remove ]] && uso && exit 1
shift

FICHEXTENSIONES="/etc/opt/chrome/policies/managed/vx-navegador-chrome-extensiones.json"
[ ! -f "$FICHEXTENSIONES" ] && { echo "No existe el fichero de configuración de extensiones...falta el paquete vx-dga-l-navegadores-extensiones-chrome"; exit 1;}

# Formato del fichero de extensiones en el paquete
# SCREENCASTIFY="mmeijimgabbpbgpdklnllpncmdofkcpn"
# OFFICEONLINE="ndjpnladcallmjemlbaebfadecfhkepb"

FICH_LISTA_EXTENSIONES="/usr/share/vitalinux/google-chrome-extensions/chrome-extensiones-listado"
[ -f "${FICH_LISTA_EXTENSIONES}" ] && \
. "${FICH_LISTA_EXTENSIONES}" || \
{
    echo "=> ¡¡Problemas!! No hay listado de extensiones disponible: ${FICH_LISTA_EXTENSIONES}" ;
    exit 1
}

until [ -z "${1}" ] ; do
    EXTENSION=""
    
    if (( ${#1} == 32 )) ; then
        EXTENSION="${1}"
        elif (( $(expr length ${!1}) == 32 )); then
        EXTENSION="${!1}"
    else
        echo "=> Error!! La chrome-extension indicada no es instalable: \"${1}\""
        exit 1
    fi
    
    case "${OPCION}" in
        "--install" )
            if ! jq -r ".ExtensionInstallForcelist[]" "${FICHEXTENSIONES}" | grep -q $EXTENSION 2>/dev/null; then
                jq ".ExtensionInstallForcelist += [\"${EXTENSION};https://clients2.google.com/service/update2/crx\"]" "${FICHEXTENSIONES}" | sponge "${FICHEXTENSIONES}" && \
                echo "=> Se ha instalado la chrome-extensión: ${1}"
            else
                echo "=> La chrome-extension ${1} ya esta instalada ..."
            fi
        ;;
        "--remove" )
            jq "del(.ExtensionInstallForcelist[] | select(contains(\"${EXTENSION}\")))" "${FICHEXTENSIONES}" | sponge "${FICHEXTENSIONES}"
            echo "=> Se ha eliminado la extensión de Google Chrome: ${1}"
        ;;
    esac
    shift
done

exit 0
