svn commit: r246969 - in user/bugmeister/gnats/tools: . changeprconf
Mark Linimon
linimon at FreeBSD.org
Tue Feb 19 02:35:07 UTC 2013
Author: linimon (doc,ports committer)
Date: Tue Feb 19 02:35:04 2013
New Revision: 246969
URL: http://svnweb.freebsd.org/changeset/base/246969
Log:
Wrappers for edit-pr to automate mundane tasks.
Authors: Renato Botelho <garga at FreeBSD.org>; Marcus Alves Grando <mnag at FreeBSD.org>;
and Eitan Adler <eadler at FreeBSD.org> (current maintainer). Contributors: Sergey
Matveychuk <sem at FreeBSD.org>; Vasil Dimov <vd at FreeBSD.org>.
Added:
user/bugmeister/gnats/tools/change-pr (contents, props changed)
user/bugmeister/gnats/tools/change-pr.helper (contents, props changed)
user/bugmeister/gnats/tools/changeprconf/
user/bugmeister/gnats/tools/changeprconf/.analyzed-pr.default
user/bugmeister/gnats/tools/changeprconf/.close-pr.default
user/bugmeister/gnats/tools/changeprconf/.feedback-pr.default
user/bugmeister/gnats/tools/changeprconf/.forward-pr.default
user/bugmeister/gnats/tools/changeprconf/.junk-pr.default
user/bugmeister/gnats/tools/changeprconf/.open-pr.default
user/bugmeister/gnats/tools/changeprconf/.portmgr-pr.default
user/bugmeister/gnats/tools/changeprconf/.take-pr.default
Added: user/bugmeister/gnats/tools/change-pr
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ user/bugmeister/gnats/tools/change-pr Tue Feb 19 02:35:04 2013 (r246969)
@@ -0,0 +1,315 @@
+#!/bin/sh
+#
+# AUTHORS:
+# Renato Botelho <garga at FreeBSD.org>
+# Marcus Alves Grando <mnag at FreeBSD.org>
+# Eitan Adler <eadler at FreeBSD.org> (current maintainer)
+#
+# CONTRIBUTORS:
+# Sergey Matveychuk <sem at FreeBSD.org>
+# Vasil Dimov <vd at FreeBSD.org>
+#
+# More information: change-pr -h
+#
+
+version="3.2.0";
+
+SPECIAL_RESP="amd64 apache eclipse emulation gnome ia64 java kde openoffice \
+ perl pgsql x11 freebsd-amd64 freebsd-apache freebsd-eclipse \
+ gecko \
+ freebsd-emulation freebsd-gnome freebsd-ia64 freebsd-java \
+ freebsd-kde freebsd-openoffice freebsd-perl freebsd-x11 \
+ freebsd-ports-bugs \
+ ports-secteam
+ secteam
+ gnats-admin"
+
+print_usage () {
+ echo "Usage: $0 [-hoafjpsc] [-Cx] [-t|-T committer] [-n email] [-m message] PR ..."
+}
+
+print_help () {
+ echo "change-pr: Try to make your life with gnats a bit better"
+ echo "version: $version";
+ echo ""
+ print_usage
+ echo ""
+ echo "Parameters:"
+ echo ""
+ echo "-h - This help"
+ echo ""
+ echo "-o - Change >State to open"
+ echo "-a - Change >State to analyzed"
+ echo "-f - Change >State to feedback"
+ echo "-p - Change >State to patched"
+ echo "-s - Change >State to suspended"
+ echo "-c - Change >State to closed"
+ echo ""
+ echo "-t - Change >Responsible to you"
+ echo "-T committer - Change >Responsible to committer"
+ echo "-n email - Change >X-GNATS-Notify to email"
+ echo ""
+ echo "-Cx - Change >Class field, where x could be:"
+ echo "s - sw-bug"
+ echo "d - doc-bug"
+ echo "c - change-request"
+ echo "u - update"
+ echo "m - maintainer-update"
+ echo ""
+ echo "-j - Change >Category to junk"
+ echo ""
+ echo "-m message - Use message to log the change"
+ echo ""
+ echo "To see the synopsis of PRs when you are using one of the"
+ echo "symlinks (e.g. close-pr) set an env var SHOW_SYNOPSIS=1"
+ echo ""
+ echo "When responsible of a PR is not freebsd-*, script will ask"
+ echo "you to confirm the change. You can set the default answer"
+ echo "using TAKE_PR_DEFAULT to 'Y' or 'N', and, can disable the"
+ echo "question setting TAKE_PR_BATCH=1 envvar."
+ exit 0
+}
+
+get_RESP () {
+ if [ -n "$PR_MESSAGE" ]
+ then
+ RESP="$PR_MESSAGE";
+ return;
+ fi;
+ if [ -f ~/.$MODULE ]; then
+ CONF=~/.$MODULE
+ else
+ CONF=~gnats/tools/changeprconf/.$MODULE.default
+ fi
+
+ if [ ! -f $CONF ]; then
+ exit 0
+ fi
+
+ SHOW=${SHOW_SYNOPSIS-N}
+
+ if [ "$SHOW" != "N" ]; then
+ for PR in $*; do
+ echo -n "$PR - "
+ echo `/usr/local/bin/query-pr $PR | grep '^>Synopsis:' | sed 's,^>Synopsis:[ \t]*,,'`
+ done
+
+ echo ""
+ fi
+
+ echo "Choose:"
+ NUM=1
+ for x in `cat $CONF | sed 's/ /___/g'`; do
+ i=`echo $x | sed 's/___/ /g; s/\"//g'`
+ echo "[$NUM] $i"
+ eval TEXT$NUM=\"$i\"
+ NUM=`expr $NUM + 1`
+ done
+
+ echo -n "or put your text here: "
+ read TMPRESP
+
+ if [ "$TMPRESP" != "" -a "`echo $TMPRESP | sed 's/[0-9]*//g'`" = "" ]; then
+ eval TEXT=\$TEXT$TMPRESP
+ if [ "$TEXT" != "" ]; then
+ TMPRESP="$TEXT"
+ else
+ TMPRESP=""
+ fi
+ fi
+
+ eval RESP=\$TMPRESP
+}
+
+MODULE=`basename $0`
+MODULEPATH=`echo $0 | sed "s,/$MODULE,,"`
+
+while getopts hoafprscm:ntT:C:j o; do
+ case "$o" in
+ h) print_help;;
+ o) NEW_STATE=open;;
+ a) NEW_STATE=analyzed;;
+ f) NEW_STATE=feedback;;
+ p) NEW_STATE=patched;;
+ r) echo "This option is now deprecated." > /dev/stderr;
+ exit 1;;
+ s) NEW_STATE=suspended;;
+ c) NEW_STATE=closed
+ CHG_RESP=1;;
+ t) CHG_RESP=1
+ CHK_RESP=0
+ NEW_RESP=`whoami`;;
+ T) CHG_RESP=1
+ CHK_RESP=1
+ NEW_RESP="$OPTARG";;
+ n) NEW_NOTIFY="$OPTARG";;
+ m) PR_MESSAGE="$OPTARG";;
+ C) NEW_CLASS_OPT="$OPTARG";;
+ j) NEW_CAT=junk;;
+ [?]) print_usage
+ exit 1;;
+ esac
+done
+shift `expr $OPTIND - 1`
+
+if [ $# -eq 0 ]; then
+ print_usage
+ exit 1
+fi
+
+if [ "$MODULE" = "close-pr" ]; then
+ if [ $# -lt 1 ]; then
+ echo "Usage: $0 PR ..."
+ exit 0
+ fi
+
+ get_RESP $*
+
+ $MODULEPATH/change-pr -c -m "$RESP" $*
+ exit 0
+elif [ "$MODULE" = "forward-pr" ]; then
+ if [ $# -lt 2 ]; then
+ echo "Usage: $0 USER PR ..."
+ exit 0
+ fi
+ user="$1";
+ shift;
+ get_RESP $*
+
+ $MODULEPATH/change-pr -m "$RESP" -T $user $*
+ exit 0
+elif [ "$MODULE" = "portmgr-pr" ]; then
+ if [ $# -lt 1 ]; then
+ echo "Usage: $0 PR ..."
+ exit 0
+ fi
+
+ get_RESP $*
+
+ $MODULEPATH/change-pr -T portmgr -m "$RESP" $*
+ exit 0
+elif [ "$MODULE" = "feedback-pr" ]; then
+ if [ $# -lt 1 ]; then
+ echo "Usage: $0 PR ..."
+ exit 0
+ fi
+
+ get_RESP $*
+
+ $MODULEPATH/change-pr -f -m "$RESP" $*
+ exit 0
+elif [ "$MODULE" = "analyzed-pr" ]; then
+ if [ $# -lt 1 ]; then
+ echo "Usage: $0 PR ..."
+ exit 0
+ fi
+
+ get_RESP $*
+
+ $MODULEPATH/change-pr -a -m "$RESP" $*
+ exit 0
+elif [ "$MODULE" = "open-pr" ]; then
+ if [ $# -lt 1 ]; then
+ echo "Usage: $0 PR ..."
+ exit 0
+ fi
+
+ get_RESP $*
+
+ $MODULEPATH/change-pr -o -m "$RESP" $*
+ exit 0
+elif [ "$MODULE" = "take-pr" ]; then
+ if [ $# -lt 1 ]; then
+ echo "Usage: $0 PR ..."
+ exit 0
+ fi
+
+ get_RESP $*
+
+ $MODULEPATH/change-pr -t -m "$RESP" $*
+ exit 0
+elif [ "$MODULE" = "repocopy-pr" ]; then
+ echo "This state is no longer active." >/dev/stderr
+ exit 1
+elif [ "$MODULE" = "junk-pr" ]; then
+ if [ $# -lt 1 ]; then
+ echo "Usage: $0 PR ..."
+ exit 0
+ fi
+
+ get_RESP $*
+
+ $MODULEPATH/change-pr -j -c -T gnats-admin -m "$RESP" $*
+ exit 0
+else
+fi
+
+NEW_CLASS=""
+case "$NEW_CLASS_OPT" in
+ s) NEW_CLASS="sw-bug";;
+ d) NEW_CLASS="doc-bug";;
+ c) NEW_CLASS="change-request";;
+ u) NEW_CLASS="update";;
+ m) NEW_CLASS="maintainer-update";;
+esac
+
+if [ -z "$NEW_STATE" -a -z "$CHG_RESP" -a -z "$NEW_CLASS" ]; then
+ print_usage
+ exit 1
+fi
+
+SPECIAL=0;
+if [ "$CHK_RESP" = "1" -a "$NEW_RESP" != "" ]; then
+ if [ "`expr $NEW_RESP : '\([^-]*\)'`" != "freebsd" ]; then
+ for RESP in $SPECIAL_RESP; do
+ if [ "$NEW_RESP" = "$RESP" ]; then
+ SPECIAL=1;
+ fi
+ done
+ id $NEW_RESP >/dev/null 2>&1
+ if [ $? -ne 0 -a $SPECIAL -ne 1 ]; then
+ echo >&2 "Error: $NEW_RESP is an invalid committer."
+ exit 1
+ fi
+ fi
+fi
+
+for PR in $*; do
+ CONT="${TAKE_PR_DEFAULT-Y}"
+
+ ENT_PR=`query-pr $PR 2>&1`
+ if [ $? -ne 0 ]; then
+ echo >&2 "PR $PR not found"
+ continue
+ fi
+
+ if [ "$CHG_RESP" = "1" ]; then
+ RESP=`echo $ENT_PR | sed -E 's/^.*>Responsible: *([^ ]*).*$/\1/'`
+ FREEBSD_RESP=`expr $RESP : '\([^-]*\)'`
+
+ if [ "$FREEBSD_RESP" != "freebsd" -a "$RESP" != "`whoami`" -a -z "$TAKE_PR_BATCH" ]; then
+ echo -n "The actual Responsible of PR $PR is $RESP. Continue? (y/n) [${TAKE_PR_DEFAULT-Y}]: "
+ read CONT
+
+ if [ "$CONT" = "" ]; then
+ CONT="${TAKE_PR_DEFAULT-Y}"
+ fi
+ fi
+ fi
+
+ if [ "$CONT" = "Y" -o "$CONT" = "y" ]; then
+ TMP=$MODULEPATH/change-pr.helper
+ /usr/bin/env \
+ OEDITOR="$EDITOR" \
+ OVISUAL="$VISUAL" \
+ VISUAL="$TMP" \
+ EDITOR= \
+ NEW_CAT="$NEW_CAT" \
+ NEW_CLASS="$NEW_CLASS" \
+ NEW_RESP="$NEW_RESP" \
+ NEW_NOTIFY=$NEW_NOTIFY \
+ NEW_STATE="$NEW_STATE" \
+ PR_MESSAGE="$PR_MESSAGE" \
+ /usr/local/bin/edit-pr $PR
+ fi
+done
Added: user/bugmeister/gnats/tools/change-pr.helper
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ user/bugmeister/gnats/tools/change-pr.helper Tue Feb 19 02:35:04 2013 (r246969)
@@ -0,0 +1,62 @@
+#!/bin/sh
+#
+# If we're editing the PR, then make the requested substitution with sed.
+# Otherwise, we're editing the reason, so run the user's editor.
+
+if [ `echo $1 | cut -c1-10` = "/tmp/chng." ]; then
+ if [ -n "$PR_MESSAGE" ]; then
+ echo "$PR_MESSAGE" > $1
+ else
+ # check to see if there is a $EDITOR; if not, use vi
+ [ -z "$OVISUAL" ] &&
+ if [ -z "$OEDITOR" ]; then
+ OVISUAL=vi
+ else
+ OVISUAL="$OEDITOR"
+ fi
+
+ cp $1 $1~
+
+ EDIT="y"
+
+ while [ "$EDIT" = "y" -o "$EDIT" = "Y" ]; do
+ $OVISUAL $1
+ if cmp -s $1 $1~; then
+ echo -n "Reason not modified, do you want to re-edit? (y/n) "
+ read EDIT
+ else
+ EDIT="n"
+ fi
+ done
+
+ rm -f $1~
+ fi
+
+ cat $1 | grep -v "^GNATS:" | fmt -w 72 > $1~
+ cp $1~ $1
+ rm -f $1~
+else
+
+ if [ "$NEW_RESP" != "" ]; then
+ cp $1 $1~
+ sed -e "/^>Responsible:/s/[^ ]*\$/$NEW_RESP/" < $1~ > $1
+ rm -f $1~
+ fi
+
+ if [ "$NEW_STATE" != "" ]; then
+ cp $1 $1~
+ sed -e "/^>State:/s/[^ ]*\$/$NEW_STATE/" < $1~ > $1
+ rm -f $1~
+ fi
+
+ if [ "$NEW_CLASS" != "" ]; then
+ cp $1 $1~
+ sed -e "/^>Class:/s/[^ ]*\$/$NEW_CLASS/" < $1~ > $1
+ rm -f $1~
+ fi
+
+ if [ "$NEW_NOTIFY" != "" ]; then
+ cp $1 $1~
+ sed -e "/^X-GNATS-Notify:/s/[^ ]*\$/$NEW_NOTIFY/" < $1~ > $1
+ fi
+fi
Added: user/bugmeister/gnats/tools/changeprconf/.analyzed-pr.default
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ user/bugmeister/gnats/tools/changeprconf/.analyzed-pr.default Tue Feb 19 02:35:04 2013 (r246969)
@@ -0,0 +1 @@
+Taken for exp-run
Added: user/bugmeister/gnats/tools/changeprconf/.close-pr.default
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ user/bugmeister/gnats/tools/changeprconf/.close-pr.default Tue Feb 19 02:35:04 2013 (r246969)
@@ -0,0 +1,4 @@
+Committed. Thanks!
+New port added. Thanks!
+Committed, with minor changes. Thanks!
+New port added, with minor changes. Thanks!
Added: user/bugmeister/gnats/tools/changeprconf/.feedback-pr.default
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ user/bugmeister/gnats/tools/changeprconf/.feedback-pr.default Tue Feb 19 02:35:04 2013 (r246969)
@@ -0,0 +1,4 @@
+Ask for maintainer approval.
+Ask for maintainer fix.
+Ask for submitter approval.
+Ask for submitter fix.
Added: user/bugmeister/gnats/tools/changeprconf/.forward-pr.default
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ user/bugmeister/gnats/tools/changeprconf/.forward-pr.default Tue Feb 19 02:35:04 2013 (r246969)
@@ -0,0 +1 @@
+Over to maintainer.
Added: user/bugmeister/gnats/tools/changeprconf/.junk-pr.default
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ user/bugmeister/gnats/tools/changeprconf/.junk-pr.default Tue Feb 19 02:35:04 2013 (r246969)
@@ -0,0 +1 @@
+This PR is junkable
Added: user/bugmeister/gnats/tools/changeprconf/.open-pr.default
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ user/bugmeister/gnats/tools/changeprconf/.open-pr.default Tue Feb 19 02:35:04 2013 (r246969)
@@ -0,0 +1,4 @@
+Maintainer has approved.
+Maintainer has fixed.
+Submitter has approved.
+Submitter has fixed.
Added: user/bugmeister/gnats/tools/changeprconf/.portmgr-pr.default
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ user/bugmeister/gnats/tools/changeprconf/.portmgr-pr.default Tue Feb 19 02:35:04 2013 (r246969)
@@ -0,0 +1 @@
+portmgr territory.
Added: user/bugmeister/gnats/tools/changeprconf/.take-pr.default
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ user/bugmeister/gnats/tools/changeprconf/.take-pr.default Tue Feb 19 02:35:04 2013 (r246969)
@@ -0,0 +1 @@
+I'll take it.
More information about the svn-src-user
mailing list