#!/bin/sh # .. vim: foldmarker=[[[,]]]:foldmethod=marker # This script will try to: ## Get arguments (at least one) ## Search contact that corresponding to arguments with khard ## Display _only_ the email address of the first match # Vars [[[ debug=false ## Colors [[[ c_redb='\033[1;31m' c_magentab='\033[1;35m' c_reset='\033[0m' ## ]]] # ]]] # Functions # Function to print a debug message [[[ debug_message() { _message="${1}" [ "${debug}" = "true" ] && printf "${c_magentab}%-6b${c_reset}\n" "DEBUG ${_message}" } # ]]] # Verify argument [[[ debug_message "− Verify arguments : Script get ${#} argument(s)." case "$#" in 0 ) printf "${c_redb}%b${c_reset}\n" "Error : Expect at least one argument." exit 1 ;; 1 ) contact_info="${1}" debug_message "− Look for a contact with these informations:\n${contact_info}" { contact_line=$(khard email "${contact_info}" | sed -n 2p) } > /dev/null ;; 2 ) contact_info="${1}" filter_pattern="${2}" debug_message "− Look for a contact with these informations:\n${contact_info}\nand filter results with:\n${filter_pattern}" { contact_line=$(khard email "${contact_info}" | grep -- "${filter_pattern}" | sed -n p) } > /dev/null ;; * ) printf "${c_redb}%b${c_reset}\n" "Error : Expect between 1 and 2 arguments." exit 2 ;; esac # ]]] if [ -n "${contact_line}" ]; then debug_message "Matching contact:\n${contact_line}" contact_mail=$(printf '%s' "${contact_line}" | awk '{print $NF}') debug_message "Mail of this contact:\n${contact_mail}" else debug_message "− Found no email addresses corresponding to the argument(s)." contact_mail="NO_CONTACT" fi # Print the message to X11 printf '%s' "${contact_mail}" | xdotool type --clearmodifiers --file - exit 0