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 () | |
tree | 2cc325c7ad264443694dc7287da6cbace9d98fb8 | |
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://.com/ruby/irb/commit/4192683ba2
-rw-r--r-- | lib/irb/context.rb | 4 | ||||
-rw-r--r-- | lib/irb/init.rb | 16 | ||||
-rw-r--r-- | lib/irb/input-method.rb | 2 | ||||
-rw-r--r-- | lib/irb/lc/help-message | 2 | ||||
-rw-r--r-- | test/irb/test_init.rb | 45 |
5 files changed, 64 insertions, 5 deletions
@@ -115,6 +115,10 @@ module IRB end @io = StdioInputMethod.new unless @io when String @io = FileInputMethod.new(input_method) @irb_name = File.basename(input_method) @@ -289,6 +289,10 @@ module IRB # :nodoc: @CONF[:PROMPT_MODE] = prompt_mode when "--noprompt" @CONF[:PROMPT_MODE] = :NULL 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 @CONF[:SCRIPT] = opt $0 = opt end break - when /^-/ fail UnrecognizedSwitch, opt else - @CONF[:SCRIPT] = opt - $0 = opt break end end @@ -137,7 +137,7 @@ module IRB # Creates a new input method object def initialize(file) super - @io = IRB::MagicFile.open(file) @external_encoding = @io.external_encoding end # The file name of this input method, usually given during initialization. @@ -38,6 +38,8 @@ Usage: irb.rb [options] [programfile] [arguments] --sample-book-mode, --simple-prompt Set prompt mode to 'simple'. --noprompt Don't output prompt. --single-irb Share self with sub-irb. --tracer Show stack trace for each command. --back-trace-limit n[=16] @@ -16,6 +16,7 @@ module TestIRB def teardown ENV.update(@backup_env) FileUtils.rm_rf(@tmpdir) end def test_setup_with_argv_preserves_global_argv @@ -87,6 +88,50 @@ module TestIRB IRB.conf[:USE_COLORIZE] = orig_use_colorize end private def with_argv(argv) |