#!/usr/bin/ruby -w

#=======================================================
# visp.rb - script para el manejo de visprint
#-------------------------------------------------------
# visprint (http://www.tastyrabbit.net/visprint/) 
# está pensado para realizar una imagen PNG fractal 
# de la salida de cualquier algoritmo de HASH
#=======================================================
# FJA - neocipres@gmail.com 	Septiembre de 2009
#=======================================================

require 'RMagick'

info = 	"\t Algunas opciones de visprint. Para mayor información: man visprint \n" <<
		"\t #{"-"*70}  \n" <<
		"\t -b(0-255) \t Permite modificar el brillo del fondo. \n" <<
		"\t -c \t\t Se usa para alternar el método usado para el color.\n" <<
		"\t -a \t\t Crea un fractal con 4 áreas de color diferentes. \n" <<
		"\t -g \t\t Crea una imagen en semi-escala de grises.\n" <<
		"\t -i(1-lots) \t Utiliza una determinada intensidad de color.\n" <<
		"\t -r(1-1000) \t Modifica el valor de la resolución en los ejes x e y. \n" <<
		"\t -l(32-128) \t Utiliza una determinada longitud de HASH. \n" <<		
		"\t -t \t\t Crea la imagen con un fondo transparente. " 

url =  {"neocipres" => 'http://neocipres.com',
		"gnu" => 'http://www.gnu.org',
		"alminares" => 'http://moodle.iesalminares.es',
		"ubuntuz" => 'http://www.ubuntuz.com',
		"omerique" => 'http://www.omerique.net'}

cmd1 = ''
cmd2 = ''
imagen = ''
listaop = ''
evento = ''

begin
 raise if ARGV.size == 0
 t = Time.now
 evento << "-" << t.strftime("%d%m%Y-%H:%M")
 clave = ARGV[0]
 imagen << clave << evento << '.png' 
 opvisp = ARGV[1..-1]
 opvisp.each{|opcion| listaop << opcion << " "} 
 cmd1 << "wget --output-document=in.txt #{url[clave]}" 
 system(cmd1)
 cmd2 << "md5sum in.txt | visprint #{listaop} > #{imagen}"
 system(cmd2)
 img = Magick::Image.read(imagen).first
 img.display

rescue
 if ARGV.size == 0
	puts "\n\t #{"="*70} "
	puts "\t > Uso: visp <clave> [opciones de visprint]\n" 
	puts "\n\t > claves: #{url.keys.join(", ")} "
	puts "\t #{"-"*70} "
	puts "\n #{info} "
 	puts "\t #{"="*70} \n\n"
 else
 	print "\n\t Error-> ", $!, "\n\n"
	
 end

end
