【发布时间】:2012-04-19 17:21:31
【问题描述】:
已编辑:
我编写的代码使用 OptionParser 来优雅地处理命令行输入。我面临两个重大打击。
- 传递一个空开关“-”不会产生错误。当然有些程序认为这是有效的,但我的不应该。
- 该程序需要两个强制开关,但它接受一个开关而不会抱怨!例如
program.ruby -f foo -b bar是有效输入,两个开关都是:REQUIRED。但是只提供一个开关没有问题,这不是预期的行为。
对于第一种情况,我已经这样做了:
opts.on('-', /\A-\Z/) do
$stderr.print "Invalid empty switch"
exit 1
end
它工作正常。但这是正确的做法吗?
对于第二种情况,我在 OptionParser.new 块中四处寻找解决方案,但找不到。例如
unless options.foo && options.bar
puts "Error."
exit 2
end
在 OptionParser.new 块之外做是正常的方式吗?
【问题讨论】:
-
好的,我会在这里进行更正,因为我正在尝试解决这个问题。为了让空开关正常工作,我使用了
opts.on('-', /\A-\Z/),它只在满足正则表达式后才进入块。 -
是的,我不确定这是怎么发生的,因为我在探索问题并不断完善解决方案时实际上已经进行了编辑。如何让版主重定向/删除这个?
-
由于另一个没有答案,您可能希望删除那个。或者单击问题下方(以及这些 cmets 上方)的“标记”链接,然后进行相应操作。
标签: ruby optionparser