Project

General

Profile

Actions

Bug #18783

open

OptionParser should recognize "-" as an optional argument

Added by konsolebox (K B) about 1 month ago. Updated about 1 month ago.

Status:
Open
Priority:
Normal
Assignee:
-
Target version:
-
ruby -v:
ruby 2.7.4p191, ruby 3.1.2p20
[ruby-core:108557]

Description

require 'optparse'

optarg = nil

OptionParser.new do |parser|
  parser.on("-o", "--opt [ARG]", "Option with optional argument") do |arg|
    optarg = arg
  end
end.parse!

puts "#{optarg.inspect}, #{ARGV.inspect}"

Executing the code above with -o - as arguments outputs nil, ["-"] when it should produce "-", [] instead.

OptionParser recognizes - as a general non-option argument but it doesn't do the same when - follows an option with an optional argument.

In my shell script, I consider options as -?* (glob) instead of -* so - is also considered as a valid argument. Perhaps OptionParser should do the same.

Updated by konsolebox (K B) about 1 month ago

Any thoughts on this?

I created a PR: https://github.com/ruby/ruby/pull/5918

Actions

Also available in: Atom PDF