main
main copied to clipboard
main fails when argument creates an invalid regex
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.