
Contrib
*******

There are a number of unofficial Bugzilla add-ons in the
``$BUGZILLA_ROOT/contrib/`` directory. This section documents them.


Command-line Search Interface
=============================

There are a suite of Unix utilities for searching Bugzilla from the
command line. They live in the ``contrib/cmdline`` directory. There
are three files - ``query.conf``, ``buglist`` and ``bugs``.

Warning: These files pre-date the templatization work done as part of the
  2.16 release, and have not been updated.

``query.conf`` contains the mapping from options to field names and
comparison types. Quoted option names are ``grepped`` for, so it
should be easy to edit this file. Comments (#) have no effect; you
must make sure these lines do not contain any quoted ``option``.

``buglist`` is a shell script that submits a Bugzilla query and writes
the resulting HTML page to stdout. It supports both short options,
(such as ``-Afoo`` or ``-Rbar``) and long options (such as
``--assignedto=foo`` or ``--reporter=bar``). If the first character of
an option is not ``-``, it is treated as if it were prefixed with
``--default=``.

The column list is taken from the COLUMNLIST environment variable.
This is equivalent to the ``Change Columns`` option that is available
when you list bugs in buglist.cgi. If you have already used Bugzilla,
grep for COLUMNLIST in your cookies file to see your current
COLUMNLIST setting.

``bugs`` is a simple shell script which calls ``buglist`` and extracts
the bug numbers from the output. Adding the prefix
``http://bugzilla.mozilla.org/buglist.cgi?bug_id=`` turns the bug list
into a working link if any bugs are found. Counting bugs is easy. Pipe
the results through **sed -e 's/,/ /g' | wc | awk '{printf $2 "\n"}'**

Akkana Peck says she has good results piping ``buglist`` output
through **w3m -T text/html -dump**


Command-line 'Send Unsent Bug-mail' tool
========================================

Within the ``contrib`` directory exists a utility with the descriptive
(if compact) name of ``sendunsentbugmail.pl``. The purpose of this
script is, simply, to send out any bug-related mail that should have
been sent by now, but for one reason or another has not.

To accomplish this task, ``sendunsentbugmail.pl`` uses the same
mechanism as the ``sanitycheck.cgi`` script; it scans through the
entire database looking for bugs with changes that were made more than
30 minutes ago, but where there is no record of anyone related to that
bug having been sent mail. Having compiled a list, it then uses the
standard rules to determine who gets mail, and sends it out.

As the script runs, it indicates the bug for which it is currently
sending mail; when it has finished, it gives a numerical count of how
many mails were sent and how many people were excluded. (Individual
user names are not recorded or displayed.) If the script produces no
output, that means no unsent mail was detected.

*Usage*: move the sendunsentbugmail.pl script up into the main
directory, ensure it has execute permission, and run it from the
command line (or from a cron job) with no parameters.
