diff options
Diffstat (limited to 'scripts/wnpp-check.sh')
-rwxr-xr-x | scripts/wnpp-check.sh | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/scripts/wnpp-check.sh b/scripts/wnpp-check.sh new file mode 100755 index 0000000..6409be5 --- /dev/null +++ b/scripts/wnpp-check.sh @@ -0,0 +1,104 @@ +#!/bin/bash + +# wnpp-check -- check for software being packaged or requested + +# This script is in the PUBLIC DOMAIN. +# Authors: +# David Paleino <d.paleino@gmail.com> +# +# Adapted from wnpp-alert, by Arthur Korn <arthur@korn.ch> + +set -e + +CURLORWGET="" +GETCOMMAND="" +EXACT=0 +PROGNAME=${0##*/} + +usage() { echo \ +"Usage: $PROGNAME <package name> [...] + -e,--exact Require an exact package name match, + rather than the default substring match. + + -h,--help Show this help message + -v,--version Show a version message + + Check whether a package is listed as being packaged (ITPed) or has an + outstanding request for packaging (RFP) on the WNPP website + https://www.debian.org/devel/wnpp/" +} + +version() { echo \ +"This is $PROGNAME, from the Debian devscripts package, version ###VERSION### +This script is in the PUBLIC DOMAIN. +Authors: David Paleino <d.paleino@gmail.com> +Adapted from wnpp-alert, by Arthur Korn <arthur@korn.ch>, +with modifications by Julian Gilbey <jdg@debian.org>" +} + +TEMP=$(getopt -n "$PROGNAME" -o 'hve' \ + -l 'help,version,exact' \ + -- "$@") || (rc=$?; usage >&2; exit $rc) + +eval set -- "$TEMP" + +while true +do + case "$1" in + -h|--help) usage; exit 0 ;; + -v|--version) version; exit 0 ;; + -e|--exact) EXACT=1 ;; + --) shift; break ;; + esac + shift +done + +if [ -z "$1" ]; then + usage + exit 1 +fi + +PACKAGES="$@" + +if command -v wget > /dev/null; then + CURLORWGET="wget" + GETCOMMAND="wget -q -O" +elif command -v curl >/dev/null; then + CURLORWGET="curl" + GETCOMMAND="curl -qfsL -o" +else + echo "$PROGNAME: need either the wget or curl package installed to run this" >&2 + exit 1 +fi + +WNPP=$(mktemp --tmpdir wnppcheck-wnpp.XXXXXX) +WNPPTMP=$(mktemp --tmpdir wnppcheck-wnpp.XXXXXX) +WNPP_PACKAGES=$(mktemp --tmpdir wnppcheck-wnpp_packages.XXXXXX) +trap 'rm -f "$WNPP" "$WNPPTMP" "$WNPP_PACKAGES"' EXIT + +# Here's a really sly sed script. Rather than first grepping for +# matching lines and then processing them, this attempts to sed +# every line; those which succeed execute the 'p' command, those +# which don't skip over it to the label 'd' + +$GETCOMMAND $WNPPTMP https://www.debian.org/devel/wnpp/being_packaged || \ + { echo "$PROGNAME: $CURLORWGET https://www.debian.org/devel/wnpp/being_packaged failed." >&2; exit 1; } +sed -ne 's/.*<li><a href="https\?:\/\/bugs.debian.org\/\([0-9]*\)">\([^:<]*\)[: ]*\([^<]*\)<\/a>.*/ITP \1 \2 -- \3/; T d; p; : d' $WNPPTMP > $WNPP + +$GETCOMMAND $WNPPTMP https://www.debian.org/devel/wnpp/requested || \ + { echo "$PROGNAME: $CURLORWGET https://www.debian.org/devel/wnpp/requested failed." >&2; exit 1; } +sed -ne 's/.*<li><a href="https\?:\/\/bugs.debian.org\/\([0-9]*\)">\([^:<]*\)[: ]*\([^<]*\)<\/a>.*/RFP \1 \2 -- \3/; T d; p; : d' $WNPPTMP >> $WNPP + +awk -F' ' '{print "("$1" - #"$2") https://bugs.debian.org/"$2" "$3}' $WNPP | sort -k 5 > $WNPP_PACKAGES + +FOUND=0 +for pkg in $PACKAGES +do + if [ $EXACT != 1 ]; then + grep $pkg $WNPP_PACKAGES && FOUND=1 + else + grep " $pkg$" $WNPP_PACKAGES && FOUND=1 + fi +done + +exit $FOUND |