martes, 3 de abril de 2012

Imprimir el código fuente de un proyecto

Tiempo atrás, con dos amigos más, nos encontrabamos implementando un programa como parte de una investigación, luego de terminarlo, nos vimos en la necesidad de imprimir el código fuente completo del programa desarrollado para anexarlo a un libro, como eran demasiados los archivos a imprimir y se encontraban en carpetas distintas, sería una tarea poco agradable realizarlo archivo por archivo.

Luego de realizar algunas investigaciones me encontré con unos comandos de linux que nos ayudarían a realizar la mencionada tarea, el primero de ellos es "enscript", un programa utilizado para convertir archivos de texto a otros formatos, tales como Postscript (por defecto), HTML, RTF y algunos más;
y el segundo es "ps2pdf" cuya función es convertir archivos de formato Postscript a PDF.

En nuestro caso en particular el software los escribimos en Java, pero esto es perfectamente utilizable con el código fuente de cualquier lenguaje.

A continuación quiero compartir con ustedes el pequeño script que escribí, talvez le ahorre a alguien algo de tiempo.


#########################################################

echo "Obteniendo los nombres de los archivos con extension java..."
find . -name '*.java' > ./filenames-to-print

echo "Obteniendo los nombres de los archivos con extension css..."
find . -name '*.css' >> ./filenames-to-print

echo "Obteniendo los nombres de los archivos con extension html..."
find . -name '*.html' >> ./filenames-to-print

echo "Obteniendo los nombres de los archivos con extension xml..."
find . -name '*.xml' >> ./filenames-to-print

echo "Obteniendo los nombres de los archivos con extension js..."
find . -name '*.js' >> ./filenames-to-print


echo "Generando archivo pdf..."

enscript -r -2 -E --margin=48:30:25:25 --color --line-numbers -o - `cat ./filenames-to-print` | ps2pdf - printable-src.pdf

#########################################################


Lo primero que hace es recopilar en un archivo de texto los nombres de todos los archivos en los que estabamos interesados que sean impresos, luego le pasamos a enscript esta lista de nombres y nos retorna un único archivo Postscript cuyo contenido es a la vez el contenido de cada uno de los archivos especificados, uno tras otro. Con las opciones especificadas arriba resulta un archivo con páginas en forma horizontal, a dos columnas de texto y márgenes indicados, además de mostrar números de líneas y texto en color.


Seguidamente, pasamos el archivo postscript como argumento al comando ps2pdf para tenerlo en formato PDF, y por último, directo a la impresora.

4 comentarios: