Подтвердить что ты не робот

Как создать параметр OptionParser требует аргументов

Ниже приведен код, но я вручную поднимаю аргументные ошибки для необходимых аргументов с помощью fetch, когда я хочу построить необходимые аргументы в собственный синтакс OptionParser для требуемых параметров:

# 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
4b9b3361

Ответ 1

Есть аналогичный вопрос с ответом, который может вам помочь: "Как указать нужный переключатель (не аргумент) с Ruby OptionParser?"

Вкратце: не существует способа сделать требуемую опцию (они все-таки называются параметрами).

Существует исключение OptionParser::MissingArgument, которое вы можете повысить, а не ArgumentError, которое вы сейчас бросаете.