<?xml version="1.0" encoding="UTF-8"?>
<!-- <!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook V4.1//EN"> -->
<appendix id="patches" xreflabel="Useful Patches and Utilities for Bugzilla">
  <title>Contrib</title>

  <para>
  
    Il existe un certain nombre d'extensions non officielles pour 
    Bugzilla dans le répertoire <filename 
    class="directory">$BUGZILLA_ROOT/contrib/</filename>. Cette section 
    leur tient lieu de documentation.

  </para>

  <section id="cmdline">
    <title>L'interface de recherche en ligne de commande</title>

    <para>
      Il existe une série d'utilitaires Unix pour faire des recherches dans Bugzilla depuis la
      ligne de commande. On les trouve dans le répertoire
      <filename class="directory">contrib/cmdline</filename>.
      Il y a trois fichiers&nbsp;: <filename>query.conf</filename>,
      <filename>buglist</filename> et <filename>bugs</filename>.
    </para>

    <warning>
      <para>

        Ces fichiers datent d'avant le travail de création de modèles 
        effectué dans la version 2.16, et n'ont pas été mis à jour.

      </para>
    </warning>
    
    <para>
      
      <filename>query.conf</filename> contient la correspondance entre 
      les options de ligne de commande et les noms de champs ainsi que 
      les types de comparaison. Les noms d'option entre guillemets sont 
      rassemblés de telle manière qu'il soit facile d'éditer ce fichier. 
      Les commentaires (#) n'ont aucun effet&nbsp;; assurez vous que ces 
      lignes ne contiennent pas <quote>d'option</quote> entre 
      guillemets.
      
    </para>

    <para>
      <filename>buglist</filename> est un script shell dont le rôle est d'adresser une requête
      à Bugzilla et d'écrire le résultat sous forme d'une page HTML sur la sortie standard.
      Il prend en compte à la fois les options abrégées (comme <quote>-Afoo</quote>
      ou <quote>-Rbar</quote>) et les options en format long (comme
      <quote>--assignedto=foo</quote> ou <quote>--reporter=bar</quote>).
      Si le premier caractère d'une option n'est pas le signe <quote>-</quote>, elle est
      considérée comme étant préfixée de <quote>--default=</quote>.
    </para>

    <para>
      La liste en colonnes est extraite du contenu de la variable d'environnement COLUMNLIST.
      C'est équivalent à l'option <quote>Change columns</quote>
      lorsque vous inscrivez les bogues dans buglist.cgi. Si vous avez
      déjà utilisé Bugzilla, lancez grep sur COLUMNLIST dans vos fichiers de cookies
      pour voir le contenu actuel de COLUMNLIST.
    </para>

    <para>
      <filename>bugs</filename> est un simple script qui appelle
      <filename>buglist</filename> et extrait les
      numéros de bogues à partir du résultat en sortie. Le fait d'ajouter le préfixe
      <quote>http://bugzilla.mozilla.org/buglist.cgi?bug_id=</quote>
      transforme la liste de bogues en liens qui fonctionnent si des bogues sont trouvés.
      Compter les bogues est une chose aisée. Récupérez le résultat avec un tube vers
      <command>sed -e 's/,/ /g' | wc | awk '{printf $2 "\n"}'</command>.
    </para>

    <para>
      Akkana Peck affirme avoir de bons résultats en plaçant un tube au niveau du
       résultat de <filename>buglist</filename> vers
       <command>w3m -T text/html -dump</command>
    </para>

  </section>

  <section id="cmdline-bugmail">
    <title>
    
    L'outil <quote>envoi de courriel de bogue non-envoyé</quote> en 
    ligne de commande
    
    </title>

    <para>
      Au sein du répertoire <filename class="directory">contrib</filename>
      existe un utilitaire portant le nom explicite (bien que compact)
      de <filename>sendunsentbugmail.pl</filename>. Le but de ce
      script est simplement d'émettre tout courriel relatif à un bogue qui aurait
      déjà dû être envoyé mais qui, pour une raison ou une autre, ne l'a pas été.
    </para>

    <para>
      Pour accomplir cette tâche, <filename>sendunsentbugmail.pl</filename> utilise
      le même mécanisme que le script <filename>sanitycheck.cgi</filename>; il
      parcourt entièrement la base de donnée en cherchant les bogues présentant des changements
      effectués il y a plus de 30 minutes, là où il ne trouve aucune trace indiquant
      qu'un courriel relatif à ce bogue ait été envoyé à qui que ce soit. Après avoir établi une liste,
      il utilise ensuite les règles standard pour déterminer qui recevra le courriel, et
      l'émet.
    </para>

    <para>
      Lorsque le script s'exécute, il indique le bogue pour lequel il envoie le
      présent courriel; lorsqu'il a fini, il fournit un total chiffré des
      courriels envoyés et du nombre de personnes qui en ont été exclues. (Les noms
      d'utilisateurs personnels ne sont pas enregistrés ni affichés.) Si le script ne produit
      aucun résultat en sortie, cela signifie qu'aucun courriel non-envoyé n'a été détecté.
    </para>

    <para>
      <emphasis>Mode d'emploi</emphasis>&nbsp;: faites remonter le script sendunsentbugmail.pl
      dans le répertoire principal, assurez vous qu'il possède les droits en exécution et lancez le
      depuis la ligne de commande (ou depuis un utilitaire de tâches planifiées) sans aucun paramètre.
    </para>
  </section>

</appendix>

<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-always-quote-attributes:t
sgml-auto-insert-required-elements:t
sgml-balanced-tag-edit:t
sgml-exposed-tags:nil
sgml-general-insert-case:lower
sgml-indent-data:t
sgml-indent-step:2
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
sgml-minimize-attributes:nil
sgml-namecase-general:t
sgml-omittag:t
sgml-parent-document:("Bugzilla-Guide.xml" "book" "chapter")
sgml-shorttag:t
sgml-tag-region-if-active:t
End:
-->