<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML
><HEAD
><TITLE
>Command-line Search Interface</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
REL="HOME"
TITLE="The Bugzilla Guide - 2.20.1 
    Release"
HREF="index.html"><LINK
REL="UP"
TITLE="Contrib"
HREF="patches.html"><LINK
REL="PREVIOUS"
TITLE="Contrib"
HREF="patches.html"><LINK
REL="NEXT"
TITLE="Command-line 'Send Unsent Bug-mail' tool"
HREF="cmdline-bugmail.html"></HEAD
><BODY
CLASS="section"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>The Bugzilla Guide - 2.20.1 
    Release</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="patches.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Appendix C. Contrib</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="cmdline-bugmail.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="section"
><H1
CLASS="section"
><A
NAME="cmdline"
>C.1. Command-line Search Interface</A
></H1
><P
>&#13;      There are a suite of Unix utilities for searching Bugzilla from the 
      command line. They live in the 
      <TT
CLASS="filename"
>contrib/cmdline</TT
> directory.
      There are three files - <TT
CLASS="filename"
>query.conf</TT
>,
      <TT
CLASS="filename"
>buglist</TT
> and <TT
CLASS="filename"
>bugs</TT
>.
    </P
><DIV
CLASS="warning"
><P
></P
><TABLE
CLASS="warning"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/warning.gif"
HSPACE="5"
ALT="Warning"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;        These files pre-date the templatisation work done as part of the
        2.16 release, and have not been updated.
      </P
></TD
></TR
></TABLE
></DIV
><P
>&#13;      <TT
CLASS="filename"
>query.conf</TT
> contains the mapping from
      options to field names and comparison types. Quoted option names
      are <SPAN
CLASS="QUOTE"
>"grepped"</SPAN
> 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 <SPAN
CLASS="QUOTE"
>"option"</SPAN
>.
    </P
><P
>&#13;      <TT
CLASS="filename"
>buglist</TT
> is a shell script that submits a
      Bugzilla query and writes the resulting HTML page to stdout.
      It supports both short options, (such as <SPAN
CLASS="QUOTE"
>"-Afoo"</SPAN
>
      or <SPAN
CLASS="QUOTE"
>"-Rbar"</SPAN
>) and long options (such
      as <SPAN
CLASS="QUOTE"
>"--assignedto=foo"</SPAN
> or <SPAN
CLASS="QUOTE"
>"--reporter=bar"</SPAN
>).
      If the first character of an option is not <SPAN
CLASS="QUOTE"
>"-"</SPAN
>, it is
      treated as if it were prefixed with <SPAN
CLASS="QUOTE"
>"--default="</SPAN
>.
    </P
><P
>&#13;      The column list is taken from the COLUMNLIST environment variable.
      This is equivalent to the <SPAN
CLASS="QUOTE"
>"Change Columns"</SPAN
> 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.
    </P
><P
>&#13;      <TT
CLASS="filename"
>bugs</TT
> is a simple shell script which calls
      <TT
CLASS="filename"
>buglist</TT
> and extracts the
      bug numbers from the output. Adding the prefix
      <SPAN
CLASS="QUOTE"
>"http://bugzilla.mozilla.org/buglist.cgi?bug_id="</SPAN
>
      turns the bug list into a working link if any bugs are found.
      Counting bugs is easy. Pipe the results through 
      <B
CLASS="command"
>sed -e 's/,/ /g' | wc | awk '{printf $2 "\n"}'</B
>
    </P
><P
>&#13;      Akkana Peck says she has good results piping 
      <TT
CLASS="filename"
>buglist</TT
> output through 
      <B
CLASS="command"
>w3m -T text/html -dump</B
>
    </P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="patches.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="cmdline-bugmail.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Contrib</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="patches.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Command-line 'Send Unsent Bug-mail' tool</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>