#!/usr/bin/env bash export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:${PATH}" export PATH="${HOME}/.local/bin:${PATH}" # directory where the script is located, so we can source files regardless of where PWD is DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" source "${DIR}/.bash_colors" : ${KEYS_DIR="$DIR"} : ${LINK_DIR="${DIR}/by-id"} : ${KEY_TYPES="asc gpg"} : ${EXCLUDED="combined.asc combo.asc combined.gpg combo.gpg"} : ${QUIET=0} : ${DRY_RUN=0} KEY_TYPES=($KEY_TYPES) EXCLUDED=($EXCLUDED) KEY_LIST=() for t in "${KEY_TYPES[@]}"; do KEY_LIST+=( $(find "$KEYS_DIR" -name "*.${t}" | grep -v "$LINK_DIR") ) done qmsg() { (( QUIET )) || >&2 msg "$@" || true } (( DRY_RUN )) && qmsg yellow " [...] DRY_RUN is true (1) - not actually linking files!" skip=0 for l in "${KEY_LIST[@]}"; do for xl in "${EXCLUDED[@]}"; do flname="$(basename "$l")" fdname="$(basename $(dirname "$l"))" if [[ "$flname" == "$xl" ]]; then qmsg yellow " [!!!] Filename '$flname' is in excluded list! Skipping...\n" skip=1 fi if [[ "$fdname" == "$xl" ]]; then qmsg yellow " [!!!] Foldername '$fdname' is in excluded list! Skipping...\n" skip=1 fi done if (( skip )); then skip=0 continue fi echo "$l" | grep -Eqi '\.gpg$' && lkext='.gpg' || lkext='.asc' rellink="$(realpath --relative-to="$LINK_DIR" "$l")" fgprint="$(gpginfo -R "$l" | jq -r '.fingerprint')" kkeyid="$(gpginfo -R "$l" | jq -r '.keyid')" kuserid="$(gpginfo -R "$l" | jq -r '.uid')" qmsg bold magenta " >>> Processing key '${l}' for user ID: $kuserid \n" if [[ -n "$fgprint" ]]; then lkpath="${LINK_DIR}/${fgprint}${lkext}" qmsg bold cyan " --> Linking GPG key to fingerprint:${RESET} $rellink -> $lkpath" (( DRY_RUN )) || ln -f -s "$rellink" "$lkpath" fi if [[ -n "$kkeyid" ]]; then lkpath="${LINK_DIR}/${kkeyid}${lkext}" qmsg bold cyan " --> Linking GPG key to Key ID: $rellink -> $lkpath" (( DRY_RUN )) || ln -f -s "$rellink" "$lkpath" fi qmsg "\n" done qmsg bold green "\n\n [++++++] Finished linking key files into ID index folder:${RESET} $LINK_DIR ${BOLD}${GREEN}++++++\n"