require 'optparse'
options = {}
options[:fichero] = ""
options[:lineas] = -1
OptionParser.new { |opts|
opts.banner = "Usage: #{File.basename($0)} -l -f "
opts.on( '-l', '--lineas N', 'lineas del fichero') do |arg|
options[:lineas] = arg.to_i
end
opts.on( '-f', '--file FILENAME', 'fichero a tratar') do |arg|
options[:fichero] = arg
end
}.parse!
puts "Opciones: fichero = #{options[:fichero]}, lineas=#{options[:lineas]}"
# Resto del script
# ...
#Fin del script
Uso normal del script
$ ruby test_parse.rb -f prueba.txt Opciones: fichero = prueba.txt, lineas=-1Queda a juicio del programador considerar si el script debe o no seguir en base a los valores que han quedado en las variables. Este comentario me lo puedo ahorrar, pero lo destaco para distinguir entre una opción incorrecta y un valor incorrecto de una opción que si existe.
Ayuda del script (-h)
El parse hace cosas automáticamente. Suelen ser el tipo de cosas que todos deberíamos gestionar cuando creamos nuestros scripts. La principal es la ayuda. Observa la linea del script
opts.banner = "Usage: #{File.basename($0)} -l -f "
Indicando el "usage" en la forma anterior, el resto lo hace el parser. Lo comprobamos indicando con "-h".
$ ruby test_parse.rb -h Usage: test_parse.rb -l-f -l, --lineas N líneas del fichero
-f, --file FILENAME fichero a leer
Errores del parser
Cuando la opción no está incluida entre las declaradas obtenemos un error que nos informa de ello. Además observa que el script no continúa y que la variable "$?" informa del error.
$ ruby test_parse.rb -i 10 test_parse.rb:23:in `': invalid option: -i (OptionParser::InvalidOption) $ echo $? 1
No hay comentarios:
Publicar un comentario