diff options
author | Jeremy Evans <[email protected]> | 2022-09-17 02:25:15 +0900 |
---|---|---|
committer | git <[email protected]> | 2022-09-17 02:25:26 +0900 |
commit | b07db967441161a84386bcbbb41d990a2f3ad31c (patch) | |
tree | 2cc325c7ad264443694dc7287da6cbace9d98fb8 /lib/irb/init.rb | |
parent | 64200990c4425ad3d104d4695dbe9cb3356555cd (diff) |
[ruby/irb] Support --noscript option to not use first non-option argument as script
Also add --script option to turn the option back on.
Previously there wasn't a way to get an interactive IRB session
and access arguments provided on the command line.
Additionally, handle `-` as script as stdin. In Unix-like tools, `-`
means to take standard input instead of a file. This doesn't
result in exactly the same output for:
```
echo 'p ARGV' > args.rb; irb args.rb a b c
```
and
```
echo 'p ARGV' | irb - a b c
```
Due to how irb handles whether stdin is a tty.
However, this change allows use of `-` as a argument, instead of
giving an unrecognized switch error. This required some small
changes to context.rb (to handle `-` as standard input) and
input-method.rb (to have FileInputMethod accept IO arguments in
addition to strings).
Implements [Feature #15371]
https://github.com/ruby/irb/commit/4192683ba2
Diffstat (limited to 'lib/irb/init.rb')
-rw-r--r-- | lib/irb/init.rb | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/lib/irb/init.rb b/lib/irb/init.rb index d2baee2017..d9c4353f39 100644 --- a/lib/irb/init.rb +++ b/lib/irb/init.rb @@ -289,6 +289,10 @@ module IRB # :nodoc: @CONF[:PROMPT_MODE] = prompt_mode when "--noprompt" @CONF[:PROMPT_MODE] = :NULL + when "--script" + noscript = false + when "--noscript" + noscript = true when "--inf-ruby-mode" @CONF[:PROMPT_MODE] = :INF_RUBY when "--sample-book-mode", "--simple-prompt" @@ -309,16 +313,20 @@ module IRB # :nodoc: IRB.print_usage exit 0 when "--" - if opt = argv.shift + if !noscript && (opt = argv.shift) @CONF[:SCRIPT] = opt $0 = opt end break - when /^-/ + when /^-./ fail UnrecognizedSwitch, opt else - @CONF[:SCRIPT] = opt - $0 = opt + if noscript + argv.unshift(opt) + else + @CONF[:SCRIPT] = opt + $0 = opt + end break end end |