gnupg/scripts/gnupgbug

186 lines
4.0 KiB
Bash

#!/bin/sh
#
# File a bug against the GNU Privacy Guard.
#
#
# Copyright (c) 2000 Thomas Roessler <roessler@guug.de>
#
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
SUBMIT="submit@bugs.guug.de"
DEBIAN_SUBMIT="submit@bugs.debian.org"
include_file ()
{
echo
echo "--- Begin $1"
sed -e 's/^-/- -/' $1 | egrep -v '^[ ]*(#|$)'
echo "--- End $1"
echo
}
case `echo -n` in
"") n=-n; c= ;;
*) n=; c='\c' ;;
esac
exec > /dev/tty
exec < /dev/tty
SCRATCH=${TMPDIR-/tmp}/`basename $0`.`hostname`.$$
mkdir ${SCRATCH} || \
{
echo "`basename $0`: Can't create temporary directory." >& 2 ;
exit 1 ;
}
trap "rm -r -f ${SCRATCH} ; trap '' 0 ; exit" 0 1 2
TEMPLATE=${SCRATCH}/template.txt
echo "Please enter a one-line description of the problem you experience:"
echo $n "> $c"
read SUBJECT
echo $n "Do you want to include your personal GnuPG configuration files? [Y|n]$c"
read personal
case "$personal" in
[nN]*) personal=no ;;
*) personal=yes ;;
esac
if test -f /etc/debian_version ; then
DEBIAN=yes
echo $n "Checking whether GnuPG has been installed as a package... $c"
GNUPGVERSION="`dpkg -l gnupg | grep ^i | awk '{print $3}'`" 2> /dev/null
if test "$GNUPGVERSION" ; then
DPKG=yes
else
DPKG=no
fi
echo "$DPKG"
if test "$DPKG" = "no" ; then
echo $n "File this bug with Debian? [Y|n]$c"
read $DPKG
case "$DPKG" in
[nN]) DPKG=no ;;
*) DPKG=yes ;;
esac
fi
else
DEBIAN=no
DPKG=no
fi
test "$MUTTVERSION" || MUTTVERSION="`mutt -v | head -1 | awk '{print $2}' | tr -d i`"
test "$DPKG" = "yes" && SUBMIT="$SUBMIT, $DEBIAN_SUBMIT"
exec > ${TEMPLATE}
echo "Subject: mutt-$MUTTVERSION: $SUBJECT"
echo "To: $SUBMIT"
echo "Cc: $LOGNAME"
echo
echo "Package: mutt"
echo "Version: $MUTTVERSION"
echo
echo "-- Please type your report below this line"
echo
echo
echo
if test "$DEBIAN" = "yes" ; then
echo "Obtaining Debian-specific information..." > /dev/tty
bug -p -s dummy mutt | \
sed -n -e "/^-- System Information/,/^---/p" | \
grep -v '^---'
fi
echo
echo "-- Mutt Version Information"
echo
mutt -v
if test "$personal" = "yes" ; then
CANDIDATES=".muttrc-${MUTTVERSION} .muttrc .mutt/muttrc-${MUTTVERSION} .mutt/muttrc"
MATCHED="none"
for f in $CANDIDATES; do
if test -f "${HOME}/$f" ; then
MATCHED="${HOME}/$f"
break
fi
done
if test "$MATCHED" = "none" ; then
echo "WARNING: Can't find your personal .muttrc." >&2
else
include_file $MATCHED
fi
fi
if test "$global" = "yes" ; then
CANDIDATES="Muttrc-${MUTTVERSION} Muttrc"
DIRECTORIES="/etc /usr/local/share/mutt"
MATCHED="none"
for d in $DIRECTORIES ; do
for f in $CANDIDATES; do
if test -f $d/$f ; then
MATCHED="$d/$f"
break
fi
done
test "$MATCHED" = "none" || break
done
if test "$MATCHED" = "none" ; then
echo "WARNING: Can't find global Muttrc." >&2
else
include_file $MATCHED
fi
fi
exec > /dev/tty
cp $TEMPLATE $SCRATCH/mutt-bug.txt
input="e"
while : ; do
if test "$input" = "e" ; then
${VISUAL-vi} $SCRATCH/mutt-bug.txt
if cmp $SCRATCH/mutt-bug.txt ${TEMPLATE} > /dev/null ; then
echo "WARNING: Bug report was not modified!"
fi
fi
echo $n "Submit, Edit, Print, Quit? [S|e|p|q]$c"
read _input
input="`echo $_input | tr EPSQ epsq`"
case $input in
e*) ;;
p*) ${PAGER-more} $SCRATCH/mutt-bug.txt ;;
s*|"") /usr/sbin/sendmail -t < $SCRATCH/mutt-bug.txt ; exit ;;
q*) exit
esac
done