diff options
author | Vasil Dimov <vd@FreeBSD.org> | 2006-12-13 07:32:58 +0000 |
---|---|---|
committer | Vasil Dimov <vd@FreeBSD.org> | 2006-12-13 07:32:58 +0000 |
commit | e2f1d375a7bc108eaae92556add3ae79829e3cac (patch) | |
tree | 7ff31e7b5c8c4a40e64481d4d1991cc3644d71da /Tools | |
parent | 65c25b0646341f7c22ac1f6388abccda3ad1c41d (diff) | |
download | ports-e2f1d375a7bc108eaae92556add3ae79829e3cac.tar.gz ports-e2f1d375a7bc108eaae92556add3ae79829e3cac.zip |
Add check for existing non-closed PRs related to the port being removed.
If any are found then ask if the port should be skipped from removal or
removed regardless of the PRs.
Notes
Notes:
svn path=/head/; revision=179634
Diffstat (limited to 'Tools')
-rwxr-xr-x | Tools/scripts/rmport | 66 |
1 files changed, 65 insertions, 1 deletions
diff --git a/Tools/scripts/rmport b/Tools/scripts/rmport index 8f9961e1893d..37339efe13d8 100755 --- a/Tools/scripts/rmport +++ b/Tools/scripts/rmport @@ -178,6 +178,55 @@ check_dep() done } +# query GNATS, format and return the result +get_PRs() +{ + catport=${1} + synopsis=${2} + date_re='[0-9]{4}/[0-9]{2}/[0-9]{2}' + prnum_re='.+/[0-9]{5,6}' + synopsis_re='.{10,}' + + log "${catport}: getting PRs having ${synopsis} in the synopsis" + + url="http://www.freebsd.org/cgi/query-pr-summary.cgi?text=${synopsis}" + + raw="`fetch -q -T 20 -o - "${url}"`" + + if [ -z "${raw}" ] ; then + log "${catport}: empty result from URL: ${url}" + exit 1 + fi + + printf "%s" "${raw}" \ + |sed -nE "s|.*>(${date_re})<.*>(${prnum_re})<.*>(${synopsis_re})</td.*|\1 \2 \3|p" \ + |sort +} + +# check if any PRs exist that are related to the port +check_PRs() +{ + catport=${1} + synopsis=${2} + + PRs="`get_PRs ${catport} "${synopsis}"`" || exit + + if [ -n "${PRs}" ] ; then + log "${catport}: PRs found, related to ${synopsis}:" + printf "%s\n" "${PRs}" >&2 + + echo "you can skip ${catport} and continue with the rest or remove it anyway" >&2 + answer=`ask "do you want to skip ${catport}?"` + if [ "${answer}" = "y" ] ; then + return 1 + else + return 0 + fi + fi + + return 0 +} + # checkout port's specific files from the repository co_port() { @@ -353,6 +402,9 @@ usage() echo "" >&2 echo "just check dependencies:" >&2 echo "${0} -d category/port" >&2 + echo "" >&2 + echo "just check if any related PRs exist:" >&2 + echo "${0} -p synopsis" >&2 exit 64 } @@ -372,6 +424,14 @@ if [ ${1} = "-d" ] ; then exit fi +if [ ${1} = "-p" ] ; then + if [ ${#} -ne 2 ] ; then + usage + fi + get_PRs "dummy" ${2} + exit +fi + if [ ${1} = "-F" ] ; then if [ ${#} -ne 1 ] ; then usage @@ -404,6 +464,10 @@ for catport in $* ; do check_dep ${catport} 1 "${*}" + if ! check_PRs ${catport} ${port} ; then + continue + fi + co_port ${cat} ${port} check_LEGAL ${catport} ${pkgname} @@ -430,7 +494,7 @@ while [ "${answer}" = "y" ] ; do # EDITOR instead of PAGER because vim has nice syntax highlighting ;-) ${EDITOR} ${diffout} - echo "you can now edit files under ${codir}/ by hand" + echo "you can now edit files under ${codir}/ by hand" >&2 answer=`ask "do you want to recreate the diff?"` done |