El día de hoy recibí una llamada telefónica de un compañero de labores en donde me solicitaba con cierta preocupación un “pequeño” reporte del estado de un listado de tickets que recién me había enviado vía correo electrónico puesto que no contaba con conexión a la intranet, al analizar un par de tickets me dije que no iba a ser fácil realizar la consulta desde el asistente que brinda el mismo Trac. Así que inmediatamente puse las manos sobre un pequeño script en Perl que hiciera el trabajo sucio por mí.
Es de hacer notar que total de tickets a revisar era el siguiente:
$ wc -l tickets
126 tickets
Tomando en cuenta el resultado previo, era inaceptable hacer dicha labor de manera manual. Por lo tanto, confirmaba que realizar un script era la vía correcta y a la final iba a ser más divertido.
Tomando en cuenta que el formato de entrada era el siguiente:
#3460
#3493
...
El formato de la salida que esperaba era similar a la siguiente:
3460,"No expira la sesión...",closed,user
Básicamente el formato implica el id, sumario, estado y responsable asociado al ticket.
Net::Trac le ofrece una manera sencilla de interactuar con una instancia remota de Trac, desde el manejo de credenciales, consultas, revisión de tickets, entre otros. A la vez, se hace uso del módulo Class::CSV el cual le ofrece análisis y escritura de documentos en formato CSV.
La manera de ejecutar el script
es la siguiente:
$ perl trac_query.pl tickets
En donde trac_query.pl
es el nombre del script y tickets
es el fichero de
entrada.
Debo aclarar que el script carece de comentarios, mea culpa. Además, el manejo de opciones vía linea de comandos es inexistente, si desea mejorarlo puede hacer uso de Getopt::Long.
Cualquier comentario, sugerencia o corrección es bienvenida.