Bug #14728
closed
OptionParser takes other options as argument values
Added by xz0r (xz0r xz0r) almost 6 years ago.
Updated almost 6 years ago.
ruby -v:
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin16]
[ruby-core:86798]
Description
test.rb
require 'optparse'
options = {}
OptionParser.new do |opts|
opts.banner = "Usage: test.rb [options]"
opts.on("--verbose", "Run verbosely") do |v|
options[:verbose] = v
end
opts.on("--custom MANDATORY", "custom") do |x|
options[:custom] = x
end
end.parse!
p options
If I run the above script as follows below is output:
$ ruby test.rb --custom --verbose
{:custom=>"--verbose"}
This is not the expected behaviour as --verbose
should not be set as the option value.
- Description updated (diff)
- Description updated (diff)
- Status changed from Open to Rejected
If --custom
with no argument is allowed, it is not "MANDATORY".
Try:
opts.on("-q","--custom [CUSTOM]", "custom") do |x|
options[:custom] = x
end
nobu (Nobuyoshi Nakada) wrote:
If --custom
with no argument is allowed, it is not "MANDATORY".
Try:
opts.on("-q","--custom [CUSTOM]", "custom") do |x|
options[:custom] = x
end
--custom
with no argument is not allowed, hence an error would be ideal in the above scenario.
In common, an argument is determined by the preceding option, consider grep
command's -e
option.
If you want to disallow an argument starting with -
, you'd need to specify a pattern
opts.on("-q","--custom MANDATORY", "custom", /\A(?!-)/) do |x|
options[:custom] = x
end
or allowed values
opts.on("-q","--custom MANDATORY", "custom", %w[A B C]) do |x|
options[:custom] = x
end
nobu (Nobuyoshi Nakada) wrote:
In common, an argument is determined by the preceding option, consider grep
command's -e
option.
If you want to disallow an argument starting with -
, you'd need to specify a pattern
opts.on("-q","--custom MANDATORY", "custom", /\A(?!-)/) do |x|
options[:custom] = x
end
or allowed values
opts.on("-q","--custom MANDATORY", "custom", %w[A B C]) do |x|
options[:custom] = x
end
Thanks!
Also available in: Atom
PDF
Like0
Like0Like0Like0Like0Like0