#!/bin/sh set -e # Defaults CLASS= INSTANCE= REALM= RECIPIENTS= SIG="$(hostname -f)" OPCODE=auto ZAUTH= # Read configuration . /etc/apt-zephyr.conf send_zephyr () { zwrite \ ${CLASS:+-c "$CLASS"} \ ${INSTANCE:+-i "$INSTANCE"} \ ${REALM:+-r "$REALM"} \ ${SIG:+-s "$SIG"} \ ${OPCODE:+-O "$OPCODE"} \ ${ZAUTH:--d} \ ${RECIPIENTS:+$RECIPIENTS} } package () { package=$1 oldver=$2 cmp=$3 newver=$4 if [ "$newver" = '-' ] && [ "$oldver" = '-' ]; then echo "Purging $package" elif [ "$newver" = '-' ]; then echo "Removing $package $oldver" elif [ "$oldver" = '-' ]; then echo "Installing $package $newver" elif [ "$cmp" = '<' ]; then echo "Upgrading $package $oldver to $newver" elif [ "$cmp" = '=' ]; then echo "Reinstalling $package $newver" elif [ "$cmp" = '>' ]; then echo "Downgrading $package $oldver to $newver" else echo "I'm confused: $*" fi } parse_v1 () { oldpkgs=$(mktemp -t "apt-zephyr-old.XXXXXX") || exit $? newpkgs=$(mktemp -t "apt-zephyr-new.XXXXXX") || exit $? xargs -r -d '\n' dpkg-deb -W | sort -o "$newpkgs" cut -f 1 "$newpkgs" | xargs -r -d '\n' dpkg-query -W | \ sort -o "$oldpkgs" join -t ' ' -j 1 -e '-' "$oldpkgs" "$newpkgs" | \ while IFS=' ' read -r package oldver newver; do if dpkg --compare-versions "$oldver" lt "$newver"; then package "$package" "$oldver" '<' "$newver" elif dpkg --compare-versions "$oldver" eq "$newver"; then package "$package" "$oldver" '=' "$newver" else package "$package" "$oldver" '>' "$newver" fi done rm -f "$oldpkgs" "$newpkgs" } read -r line case "$line" in 'VERSION 2') while read -r line && [ -n "$line" ]; do :; done while read -r package oldver cmp newver action; do case "$action" in '**CONFIGURE**' | '**REMOVE**') package "$package" "$oldver" "$cmp" "$newver" ;; '**ERROR**') echo "ERROR on $package $newver" ;; esac done ;; 'VERSION *') echo "$0: unrecognized version: $line" ;; '') ;; *) (echo "$line"; cat) | parse_v1 ;; esac | send_zephyr