Class: Pry::CLI
Overview
Manage the processing of command line options
Constant Summary collapse
- NoOptionsError =
Class.new(StandardError)
Class Attribute Summary collapse
-
.input_args ⇒ Array<String>
The input array of strings to process as CLI options.
-
.option_processors ⇒ Array
The Procs that process the parsed options.
-
.options ⇒ Proc
The Proc defining the valid command line options.
Class Method Summary collapse
-
.add_option_processor(&block) ⇒ Object
Add a block responsible for processing parsed options.
-
.add_options(&block) ⇒ Object
Add another set of CLI options (a Pry::Slop block).
- .parse_options(args = ARGV) ⇒ Object
-
.reset ⇒ Object
Clear ‘options` and `option_processors`.
- .start(opts) ⇒ Object
Class Attribute Details
.input_args ⇒ Array<String>
Returns The input array of strings to process as CLI options.
21 22 23 |
# File 'lib/pry/cli.rb', line 21 def input_args @input_args end |
.option_processors ⇒ Array
Returns The Procs that process the parsed options. Plugins can utilize this facility in order to add and process their own Pry options.
17 18 19 |
# File 'lib/pry/cli.rb', line 17 def option_processors @option_processors end |
.options ⇒ Proc
Returns The Proc defining the valid command line options.
12 13 14 |
# File 'lib/pry/cli.rb', line 12 def @options end |
Class Method Details
.add_option_processor(&block) ⇒ Object
Add a block responsible for processing parsed options.
39 40 41 42 43 44 |
# File 'lib/pry/cli.rb', line 39 def add_option_processor(&block) self.option_processors ||= [] option_processors << block self end |
.add_options(&block) ⇒ Object
Add another set of CLI options (a Pry::Slop block)
24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/pry/cli.rb', line 24 def (&block) if = self. = proc do instance_exec(&) instance_exec(&block) end else self. = block end self end |
.parse_options(args = ARGV) ⇒ Object
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/pry/cli.rb', line 52 def (args = ARGV) unless raise NoOptionsError, "No command line options defined! Use Pry::CLI.add_options to " \ "add command line options." end @pass_argv = args.index { |cli_arg| %w[- --].include?(cli_arg) } if @pass_argv slop_args = args[0...@pass_argv] self.input_args = args.replace(args[@pass_argv + 1..-1]) else self.input_args = slop_args = args end begin opts = Pry::Slop.parse!( slop_args, help: true, multiple_switches: false, strict: true, & ) rescue Pry::Slop::InvalidOptionError # Display help message on unknown switches and exit. puts Pry::Slop.new(&) Kernel.exit end Pry.initial_session_setup Pry.final_session_setup # Option processors are optional. option_processors.each { |processor| processor.call(opts) } if option_processors opts end |
.reset ⇒ Object
Clear ‘options` and `option_processors`
47 48 49 50 |
# File 'lib/pry/cli.rb', line 47 def reset self. = nil self.option_processors = nil end |
.start(opts) ⇒ Object
90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
# File 'lib/pry/cli.rb', line 90 def start(opts) Kernel.exit if opts.help? # invoked via cli Pry.cli = true # create the actual context if opts[:context] Pry.initial_session_setup context = Pry.binding_for(eval(opts[:context])) # rubocop:disable Security/Eval Pry.final_session_setup else context = Pry.toplevel_binding end if !@pass_argv && Pry::CLI.input_args.any? && Pry::CLI.input_args != ["pry"] full_name = File.(Pry::CLI.input_args.first) Pry.load_file_through_repl(full_name) Kernel.exit end # Start the session (running any code passed with -e, if there is any) Pry.start(context, input: StringIO.new(Pry.config.exec_string)) end |