#!/bin/bash
# lastact: arturo@2023-06-29
# desc: Configuración de los bookmarks del explorador de archivos
# Parámetros a recibir: "${ACCION}" "${RUTA}" "${ALIAS}" "${MODIFICAR_SKEL}"

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

# Help-Begin: Descripción de la ayuda de la función:
AYUDA='Ayuda: Deben pasarse los siguientes parámetros para configurar los bookmarks del explorador de archivos:
    # 1) "add|del": Acción a realizar. "add" permite añadir o actualizar la lista de bookmarks, y "del" lo eliminaría.
    # 2) "ruta": La ruta asociada al bookmark.
    # 3) "alias": Alias del bookmark. Si se pone "null" se corresponderá con el basename de la ruta.'
EJEMPLOS=("${0} \"add\" \"file:///home/arturo/Dropbox/IES/vitalinux\" \"Vitalinux\"")
EJEMPLOS+=("${0} \"del\" \"file:///home/arturo/Dropbox/IES/vitalinux\" \"null\"")
if vx-check_need_help "${1}" || [[ -z "${1}" ]]; then
    vx-show_help "${0}" "${AYUDA}" "${EJEMPLOS[@]}" && exit 0
fi
# Help-End

ACCION="${1:-"null"}"
RUTA="${2:-"null"}"
ALIAS="${3:-"null"}"

# 0) Comprobamos que se ha especificado una ruta:
[[ "${RUTA}" == "null" ]] && \
    echo "#> Bookmarks: No se ha especificado ninguna ruta. Salimos" && exit 1

# 1) Comprobamos que el usuario gráfico dispone de el fichero de configuración de bookmarks. Esperamos 30 segundos a ver si se autogenera:
FICHCONF="$(vx-home-usuario-grafico)/.config/gtk-3.0/bookmarks"
INTENTOS=30
CONT=1
while (( CONT < INTENTOS )) ; do
    [[ -f "${FICHCONF}" ]] && break
    echo "#> Bookmarks: esperamos a que se autogenere ${FICHCONF}. Intento ${CONT}"
    ((CONT++))
done
[[ ! -f "${FICHCONF}" ]] && \
    echo "#> Bookmarks: No se ha autogenerado ${FICHCONF}. Salimos" && exit 2

# 2) Configuramos los bookmarks del usuario gráfico:
case "${ACCION}" in
"add")
    # 1.1) Comprobamos si la ruta ya existe para actualizarlo o crearlo de nuevo, además de comprobar el alias:
    [[ "${ALIAS}" == "null" ]] && ALIAS="$(basename "${RUTA}")"
    if grep -E -q "^${RUTA} |^${RUTA}$" "${FICHCONF}" ; then
        echo "#> Bookmarks: Ya existe el bookmark ${RUTA}, lo actualizamos." &&
            sed -E -i --follow-symlinks "s;^${RUTA} .*|^${RUTA}$;${RUTA} ${ALIAS};g" "${FICHCONF}"
    else
        echo "#> Bookmarks: No existe el bookmark ${RUTA}, lo añadimos." &&
            echo "${RUTA} ${ALIAS}" >>"${FICHCONF}"
    fi
    ;;
"del")
    # 1.2) Eliminamos el Bookmark en el caso de que exista:
    if [[ "${ALIAS}" == "null" ]] ; then
        grep -E -q "^${RUTA} |^${RUTA}$" "${FICHCONF}" &&
            echo "#> Bookmarks: Existe el bookmark ${RUTA}, lo eliminamos." &&
            sed -E -i --follow-symlinks "\;^${RUTA}[[:blank:]]+.*|^${RUTA}$;d" "${FICHCONF}"
    else
            grep -E -q "^${RUTA} |^${RUTA}$" "${FICHCONF}" &&
            echo "#> Bookmarks: Existe el bookmark ${RUTA}, lo eliminamos." &&
            sed -E -i --follow-symlinks "\#^${RUTA}[[:blank:]]+${ALIAS}#d" "${FICHCONF}"
    fi
    ;;
esac

exit 0