#!/bin/bash # wnpp-check -- check for software being packaged or requested # This script is in the PUBLIC DOMAIN. # Authors: # David Paleino # # Adapted from wnpp-alert, by Arthur Korn set -e CURLORWGET="" GETCOMMAND="" EXACT=0 PROGNAME=${0##*/} usage() { echo \ "Usage: $PROGNAME [...] -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 Adapted from wnpp-alert, by Arthur Korn , with modifications by Julian Gilbey " } 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/.*
  • \([^:<]*\)[: ]*\([^<]*\)<\/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/.*
  • \([^:<]*\)[: ]*\([^<]*\)<\/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