#!/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