我正在使用 Ruby 的 OptionParser (require 'optparse'
) 处理一个“verbose”选项,它可以是 true 或 false。代码如下:
parser.on('-v', '--[no-]verbose', 'Verbose mode') do |v|
self.verbose = v
end
我支持在环境变量中指定选项(我将其内容前置到ARGV),因此可以在该环境变量中设置详细模式,并在命令行上使用--no-verbose
来覆盖它。但是,我无法找到一种用短选项覆盖它的方法。我尝试了以下操作,但没有成功:
-v-
-v0
-v=0
我在https://github.com/ruby/ruby/blob/trunk/lib/optparse.rb找到了源代码,但是没有从中找到答案。
我该怎么做呢?
nil
),所以我不确定为什么你需要使用短代码覆盖它?你也可以将其初始化为false
,例如def initialize; self.verbose = false; end
。 - engineersmnkyrexe
调用中被覆盖。目前,将参数添加到ARGV
的方法prepend_environment_options
位于https://github.com/keithrbennett/rexe/blob/master/exe/rexe#L53-L59,但代码可能会随时间而改变;如果有更改,请搜索方法名称或`ARGV`。 - Keith Bennett