Issue #14728 has been updated by nobu (Nobuyoshi Nakada).

Description updated
Status changed from Open to Rejected

If `--custom` with no argument is allowed, it is not "MANDATORY".

Try:

```ruby
  opts.on("-q","--custom [CUSTOM]", "custom") do |x|
    options[:custom] = x
  end
```

----------------------------------------
Bug #14728: OptionParser takes other options as argument values
https://bugs.ruby-lang.org/issues/14728#change-71763

* Author: xz0r (xz0r xz0r)
* Status: Rejected
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin16]
* Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN
----------------------------------------
`test.rb`

~~~ ruby
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.



-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>