1
0
Fork 0
mirror of https://github.com/pry/pry.git synced 2022-11-09 12:35:05 -05:00

cli: parse_opts should not actually spin off a repl

This commit is contained in:
Richo Healey 2015-03-11 13:53:21 -07:00
parent 65fdcba0d9
commit f3339c8cef
3 changed files with 31 additions and 29 deletions

View file

@ -13,4 +13,5 @@ rescue LoadError
end end
# Process command line options and run Pry # Process command line options and run Pry
Pry::CLI.parse_options opts = Pry::CLI.parse_options
Pry::CLI.start(opts)

View file

@ -83,7 +83,31 @@ class Pry
option_processors.each { |processor| processor.call(opts) } option_processors.each { |processor| processor.call(opts) }
end end
self opts
end
def start(opts)
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]))
else
context = Pry.toplevel_binding
end
if Pry::CLI.input_args.any? && Pry::CLI.input_args != ["pry"]
full_name = File.expand_path(Pry::CLI.input_args.first)
Pry.load_file_through_repl(full_name)
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 end
end end
@ -93,9 +117,6 @@ class Pry
end end
# String that is built to be executed on start (created by -e and -exec switches)
exec_string = ""
# Bring in options defined by plugins # Bring in options defined by plugins
Slop.new do Slop.new do
on "no-plugins" do on "no-plugins" do
@ -116,7 +137,7 @@ Copyright (c) 2013 John Mair (banisterfiend)
-- --
} }
on :e, :exec=, "A line of code to execute in context before the session starts" do |input| on :e, :exec=, "A line of code to execute in context before the session starts" do |input|
exec_string + input + "\n" Pry.config.exec_string += input + "\n"
end end
on "no-pager", "Disable pager for long output" do on "no-pager", "Disable pager for long output" do
@ -194,27 +215,4 @@ Copyright (c) 2013 John Mair (banisterfiend)
"Start the session in the specified context. Equivalent to `context.pry` in a session.", "Start the session in the specified context. Equivalent to `context.pry` in a session.",
:default => "Pry.toplevel_binding" :default => "Pry.toplevel_binding"
) )
end.add_option_processor do |opts|
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]))
else
context = Pry.toplevel_binding
end
if Pry::CLI.input_args.any? && Pry::CLI.input_args != ["pry"]
full_name = File.expand_path(Pry::CLI.input_args.first)
Pry.load_file_through_repl(full_name)
exit
end
# Start the session (running any code passed with -e, if there is any)
Pry.start(context, :input => StringIO.new(exec_string))
end end

View file

@ -110,6 +110,9 @@ class Pry::Config::Default
completer: proc { completer: proc {
require "pry/input_completer" require "pry/input_completer"
Pry::InputCompleter Pry::InputCompleter
},
exec_string: proc {
""
} }
} }