From 29d9caa9dc8ae7b8a6dc2dbe1d06dd554a5181ae Mon Sep 17 00:00:00 2001 From: Samir Benmendil Date: Thu, 16 Feb 2023 13:52:02 +0000 Subject: [PATCH] Collect failed keys and print them at the end Since !180, all keys are tried. This can indeed be useful but buries the offending key in a long output log. This stores a message containing the key and UID during processing and prints them all at the end. --- wkd_sync/archlinux-keyring-wkd-sync | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/wkd_sync/archlinux-keyring-wkd-sync b/wkd_sync/archlinux-keyring-wkd-sync index d7d502f..867acae 100755 --- a/wkd_sync/archlinux-keyring-wkd-sync +++ b/wkd_sync/archlinux-keyring-wkd-sync @@ -42,7 +42,6 @@ gpg_locate_external=( fingerprint_mboxes="$( gpg --homedir "$homedir" --no-permission-warning --list-keys --list-options show-only-fpr-mbox )" -error=0 # a list of of all revoked keys and keys that have no valid main # key signatures @@ -56,16 +55,20 @@ if (( EUID != 0 )); then exit 1 fi +errors=() # first update the main signing keys, then the packager keys for domain_match in "$main_key_domain_match" "$packager_domain_match"; do while read -ra fpr_email; do if [[ ${fpr_email[1]} =~ $domain_match && ! "$old_fingerprints" =~ ${fpr_email[0]} && ! "${invalid_fingerprints[*]}" =~ ${fpr_email[0]} ]]; then printf "Refreshing key %s with UID %s...\n" "${fpr_email[0]}" "${fpr_email[1]}" - "${gpg_locate_external[@]}" "${fpr_email[1]}" || let ++error + if ! "${gpg_locate_external[@]}" "${fpr_email[1]}"; then + errors+=("Error refreshing key ${fpr_email[0]} with UID ${fpr_email[1]}.") + fi else printf "Skipping key %s with UID %s...\n" "${fpr_email[0]}" "${fpr_email[1]}" fi done <<< "$fingerprint_mboxes" done -exit ${error} +>&2 printf "%s\n" "${errors[@]}" +exit ${#errors[@]}