main icon indicating copy to clipboard operation
main copied to clipboard

main fails when argument creates an invalid regex

Open ggem opened this issue 1 year ago • 0 comments

The following program should just print its arguments:

require 'main'

Main do
  argument('args') { arity -1 }

  def run
    param['args'].values.each{|arg| puts arg}
  end
end

However, when the arguments don't create a valid regex, the program just fails:

% /usr/bin/ruby test.rb "("
/Library/Ruby/Gems/2.6.0/gems/main-6.3.0/lib/main/program/class_methods.rb:138:in `block in dynamically_extend_via_commandline_modes!': end pattern with unmatched parenthesis: /^(/ (RegexpError)
	from /Library/Ruby/Gems/2.6.0/gems/main-6.3.0/lib/main/program/class_methods.rb:124:in `loop'
	from /Library/Ruby/Gems/2.6.0/gems/main-6.3.0/lib/main/program/class_methods.rb:124:in `dynamically_extend_via_commandline_modes!'
	from /Library/Ruby/Gems/2.6.0/gems/main-6.3.0/lib/main/program/class_methods.rb:69:in `block in build'
	from /Library/Ruby/Gems/2.6.0/gems/main-6.3.0/lib/main/program/class_methods.rb:68:in `module_eval'
	from /Library/Ruby/Gems/2.6.0/gems/main-6.3.0/lib/main/program/class_methods.rb:68:in `build'
	from /Library/Ruby/Gems/2.6.0/gems/main-6.3.0/lib/main/factories.rb:16:in `run'
	from /Library/Ruby/Gems/2.6.0/gems/main-6.3.0/lib/main/factories.rb:25:in `Main'
	from test.rb:3:in `<main>'
% /usr/bin/ruby test.rb "\1"
/Library/Ruby/Gems/2.6.0/gems/main-6.3.0/lib/main/program/class_methods.rb:138:in `block in dynamically_extend_via_commandline_modes!': invalid backref number/name: /^\1/ (RegexpError)
% /usr/bin/ruby test.rb "["
/Library/Ruby/Gems/2.6.0/gems/main-6.3.0/lib/main/program/class_methods.rb:138:in `block in dynamically_extend_via_commandline_modes!': premature end of char-class: /^[/ (RegexpError)
% /usr/bin/ruby test.rb '\'
/Library/Ruby/Gems/2.6.0/gems/main-6.3.0/lib/main/program/class_methods.rb:138:in `block in dynamically_extend_via_commandline_modes!': too short escape sequence (ArgumentError)

I tried with ruby versions 2.6.10, 3.1.3 and 3.2.1 with identical results.

ggem avatar Mar 12 '24 20:03 ggem