Как использовать 'конфликты' с ruby ​​trolloop

Привет! Я использую троллоп для анализа параметров командной строки в ruby, у меня есть четыре взаимоисключающих параметра, и всегда требуется один параметр.

Я застрял, пытаясь выяснить, как обеспечить передачу только одного из четырех вариантов. Если вызывается с несколькими вариантами, я хочу, чтобы показалась справка по использованию (обучить?).

Я вижу из источника троллейбусов что-то, называемое конфликтами

http://www.rubydoc.info/gems/trollop/2.1.2/Trollop/Parser

звучит так, будто он делает то, что я хочу (?), но я не могу понять, как правильно его использовать.

Моя нынешняя строфа это эффективно

require 'trollop'
opts = Trollop::options do

  opt :last, "last"
  opt :first, "first"
  opt :file, "filename",
        :type => String
  opt :date, "date to read",
        :type => Date
end
Trollop::die :file, "must exist" unless File.exist?(opts[:file]) if opts[:file]

благодарю вас

1 ответ

Решение

Вы можете добавить conflicts как линия в вашем do блок, как это:

require 'trollop'
opts = Trollop::options(ARGV) do
  opt :last, "last"
  opt :first, "first"
  opt :file, "filename", :type => String
  opt :date, "date to read", :type => Date
  conflicts :last, :first
end

puts "Your Options Are: "
puts opts

Тогда вы получите следующий вывод:

ruby test_options.rb  --last Last --first First
Error: --last conflicts with --first.
Try --help for help.
Другие вопросы по тегам