ruby - Cómo generar OptionParser requiere argumentos
(1)
El código a continuación funciona, pero estoy elevando manualmente los errores de argumento para los argumentos requeridos usando fetch
, cuando quiero construir los argumentos requeridos en la sintaxis OptionParser nativa para los parámetros requeridos:
# ocra script.rb -- --type=value
options = {}
OptionParser.new do |opts|
opts.banner = "Usage: example.rb [options]"
opts.on("--type [TYPE]",String, [:gl, :time], "Select Exception file type (gl, time)") do |t|
options["type"] = t
end
opts.on("--company [TYPE]",String, [:jaxon, :doric], "Select Company (jaxon, doric)") do |t|
options["company"] = t
end
end.parse!
opts = {}
opts[''type''] = options.fetch(''type'') do
raise ArgumentError,"no ''type'' option specified as a parameter (gl or time)"
end
opts[''company''] = options.fetch(''company'') do
raise ArgumentError,"no ''company'' option specified as a parameter (doric or jaxon)"
end
Hay una pregunta similar con una respuesta que puede ayudarlo: " ¿Cómo se especifica un interruptor requerido (no un argumento) con Ruby OptionParser? "
En resumen: no parece haber una manera de hacer que una opción sea necesaria (después de todo, se denominan opciones).
Hay una excepción OptionParser::MissingArgument
que puede generar en lugar del ArgumentError
que está lanzando actualmente.