1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
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
|