From b3d871e4e82d372bbf8ad861248a5fd4f67c8ba4 Mon Sep 17 00:00:00 2001 From: bill-auger Date: Sat, 18 Jan 2020 10:52:53 -0500 Subject: [packages-by]: initial script --- src/maintenance-tools/packages-by | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 src/maintenance-tools/packages-by diff --git a/src/maintenance-tools/packages-by b/src/maintenance-tools/packages-by new file mode 100644 index 0000000..ea9071b --- /dev/null +++ b/src/maintenance-tools/packages-by @@ -0,0 +1,30 @@ +#!/bin/bash + +readonly PACKAGESBY_USAGE="USAGE: packages-by [-d] [-s] \n\tpass to match against output lines of the form:\n\t\tPKGNAME ARCH/REPO YYYY-MM-DD-HH-MM NAME \n\tpass arg: '-d' to sort by date\n\tpass arg: '-s' to show [SIGNATURE_NAME] in place of " +readonly SHOULD_SORT=$( [[ "$1" == '-d' ]] && echo 1 || echo 0 ) ; [[ "$1" == '-d' ]] && shift ; +readonly SHOW_SIG_NAME=$( [[ "$1" == '-s' ]] && echo 1 || echo 0 ) ; [[ "$1" == '-s' ]] && shift ; +readonly SHOULD_SORT=$( [[ "$1" == '-d' ]] && echo 1 || echo $SHOULD_SORT ) ; [[ "$1" == '-d' ]] && shift ; +readonly SORT_CMD=$( (( $SHOULD_SORT )) && echo 'sort --key=3' || echo 'cat' ) +readonly TERM="$*" ; [[ -z "$TERM" ]] && echo -e ${PACKAGESBY_USAGE} && return 1 ; + + +expac -S --config /etc/pacman.conf.all \ + --timefmt="%Y-%m-%d-%R" "%n %a/%r %b %p %g" | \ +grep $TERM | column -t | $SORT_CMD | \ +while read pkg_data_raw +do pkg_data=$( sed -E 's|(.+) <.*|\1| ' <<<$pkg_data_raw ) + email=$( sed -E 's|.+ <([^>]*)>.*|\1| ' <<<$pkg_data_raw ) + sig=$( sed -E 's|.+ ([^ ]+)|\1| ' <<<$pkg_data_raw ) + + if (( $SHOW_SIG_NAME )) + then keyid=$( base64 --decode <<<$sig | gpg --list-packets | grep keyid | cut -d ' ' -f 6 ) + sig_name=$( pacman-key --list-keys $keyid 2> /dev/null | \ + grep -E '^uid .*] [^<]* <' | head -n 1 | \ + sed -E 's|^uid .*] ([^<]*) <.*|\1|' ) + + echo "$pkg_data [$sig_name]" + else echo "$pkg_data <$email>" + fi + +# echo -en "\npkg=$pkg_data\nsig=$sig\nkeyid=$keyid\n$( (( $SHOW_SIG_NAME )) && echo "sig_name=$sig_name" || echo "email=$email" )" +done -- cgit v1.2.2