#!/bin/bash
# lastact: [arturo@2024-03-07]
# desc: script que almacena en el portapapeles el valor recibido por parámetro o a través de una tubería

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

# 0) Comprobamos si se solicita ayuda y se muestra:
function vx_clipboard_help() {
    NOMBRE_SCRIPT="$(basename "${0}")"
    DESCRIPCION="Almacena en el portapapeles la cadena de texto pasada como parámetro o a través de una tubería."
    EJEMPLOS=( "${NOMBRE_SCRIPT} \"-h\" # Muestra la actual ayuda" )
    EJEMPLOS+=( "${NOMBRE_SCRIPT} \"Cadena de texto que se almacena en el portapapeles\"" )
    EJEMPLOS+=( "echo \"Cadena pasado a través de tubería al portapapeles\" | ${NOMBRE_SCRIPT}" )
    vx-show_help_script "${NOMBRE_SCRIPT}" "${DESCRIPCION}" "${EJEMPLOS[@]}"
}

# 1) Comprobamos si se pide ayuda de como usar el comando:
vx-check_need_help "${1}" && vx_clipboard_help && exit 0

# 2) Almacenamos en una variable el valor recibido por parámetro o a través de una tubería:
(( ${#} > 0 )) && PATRON="${*}" || \
{
    # read -r -t 0.1 PATRON
    while IFS= read -r -t 0.1 LINEA; do
        PATRON+="${LINEA}"$'\n'  # Concatenar la línea a la variable PATRON
    done
}
[[ ! "${PATRON}" ]] && vx_clipboard_help && exit 0

# 3) Guardamos el valor recibido en el Portapapeles:
TITULO="Portapapeles: XClip"
TEXTO="\"$(vx-trim "${PATRON}")\""
TEXTO_ERROR="Fallo al copiar al portapapeles ${TEXTO}"
if echo -n "${PATRON}" | tee >(xclip) >(xclip -selection clipboard) >/dev/null ; then
    vx-detectar_gui && \
    notify-send -i vitalinux "${TITULO}" "${TEXTO}" || \
    echo "${TITULO} => ${TEXTO}"
else
    vx-detectar_gui && \
    notify-send -i vitalinux "${TITULO}" "${TEXTO_ERROR}" || \
    echo "${TITULO} => ${TEXTO_ERROR}"
fi

echo -n "${PATRON}"
exit 0