pry 0.9.3pre1-i386-mingw32 → 0.9.4-i386-mingw32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. data/CHANGELOG +53 -0
  2. data/CONTRIBUTORS +13 -0
  3. data/README.markdown +4 -2
  4. data/Rakefile +17 -3
  5. data/TODO +22 -0
  6. data/lib/pry.rb +102 -24
  7. data/lib/pry/command_context.rb +12 -0
  8. data/lib/pry/command_processor.rb +50 -19
  9. data/lib/pry/command_set.rb +17 -7
  10. data/lib/pry/completion.rb +6 -6
  11. data/lib/pry/config.rb +6 -2
  12. data/lib/pry/default_commands/basic.rb +8 -4
  13. data/lib/pry/default_commands/context.rb +84 -36
  14. data/lib/pry/default_commands/documentation.rb +50 -30
  15. data/lib/pry/default_commands/easter_eggs.rb +5 -0
  16. data/lib/pry/default_commands/input.rb +20 -16
  17. data/lib/pry/default_commands/introspection.rb +61 -77
  18. data/lib/pry/default_commands/ls.rb +22 -14
  19. data/lib/pry/default_commands/shell.rb +32 -17
  20. data/lib/pry/extended_commands/user_command_api.rb +32 -1
  21. data/lib/pry/helpers/base_helpers.rb +21 -9
  22. data/lib/pry/helpers/command_helpers.rb +99 -17
  23. data/lib/pry/helpers/text.rb +12 -11
  24. data/lib/pry/history.rb +61 -0
  25. data/lib/pry/plugins.rb +19 -8
  26. data/lib/pry/pry_class.rb +49 -60
  27. data/lib/pry/pry_instance.rb +122 -119
  28. data/lib/pry/version.rb +1 -1
  29. data/pry.gemspec +15 -14
  30. data/test/helper.rb +31 -0
  31. data/test/test_command_processor.rb +8 -87
  32. data/test/test_command_set.rb +40 -2
  33. data/test/test_completion.rb +26 -0
  34. data/test/test_default_commands/test_context.rb +185 -1
  35. data/test/test_default_commands/test_documentation.rb +10 -0
  36. data/test/test_default_commands/test_input.rb +39 -13
  37. data/test/test_default_commands/test_introspection.rb +11 -1
  38. data/test/test_default_commands/test_shell.rb +18 -0
  39. data/test/test_pry.rb +217 -47
  40. data/test/test_pry_history.rb +84 -0
  41. data/test/test_pry_output.rb +44 -0
  42. data/test/test_special_locals.rb +35 -0
  43. metadata +83 -77
data/CHANGELOG CHANGED
@@ -1,3 +1,56 @@
1
+ 8/9/2011 version 0.9.4
2
+
3
+ MAJOR NEW FEATURES:
4
+ - JRuby support, including show-method/edit-method and editor integration on both 1.8 and 1.9 versions
5
+ - extended cd syntax: cd ../@x/y
6
+ - play command now works much better with _in_ array (this is a very powerful feature, esp with Pry::NAV_PROMPT)
7
+ - history saving/loading is now lightning fast
8
+ - 'edit' (entered by itself) now opens current lines in input buffer in an editor, and evals on exit
9
+ - 'edit' command is also, in general more intelligent
10
+ - ls output no longer in array format, and colors can be configured, e.g: Pry.config.ls.ivar_color = :bright_blue
11
+ - new switch-to command for moving around the binding stack without exiting out of sessions
12
+ - more sophisticated prompts, Pry::NAV_PROMPT to ease deep spelunking of code
13
+ - major bug fix for windows systems
14
+ - much better support for huge objects, should no longer hang pry (see #245)
15
+ - cat --ex and edit --ex now work better
16
+
17
+ complete CHANGELOG:
18
+ * tempfile should end in .rb (for edit -t)
19
+ * ls output should not be in array format
20
+ * fix history saving (should not save all of Readline::HISTORY, but only what changed)
21
+ * prevent blank lines going to Readline::HISTORY (thanks cirwin!)
22
+ * ensure that cat --ex emulates the `whereami` format - includes line numbers and formatted the same, etc
23
+ * fixed bug #200 ( https://github.com/pry/pry/issues/200 )- string interpolation bug (thanks to ryanf)
24
+ * show-doc and stat now display method visibility (update WIKI)
25
+ * got rid of warnings caused by stricter ruby 1.9.3 rules
26
+ * remove interpolation of command names and fix interpolation error messag (update WIKI) (thanks ryanf!)
27
+ * 'nested sessions' now use binding stacks (so each instance manages its own collection of bindings without spawning other instances)
28
+ * 'cd ..' just pops a binding off the binding_stack with special behaviour when only one binding in stack - it breaks out of the repl loop
29
+ * added switch-to command (like jump-to but doesnt unwind the stack)
30
+ * show-method and show-doc now accept multiple method names
31
+ * control_d hook added (Pry.config.control_d_handler)
32
+ * behaviour of ^d is now to break out of current expr if in multi-line expr, or break out of current context if nested, or break out of pry repl loop if at top-level
33
+ * can no longer interpolate command name itself e.g #{x}-#{y} where x = "show" and y = "doc"
34
+ * ^C no longer captured
35
+ * got rid of Pry.active_instance, Pry.last_exception and friends.
36
+ * also special locals now shared among bindings in a pry instance (i.e _ex_ (and friends) re-injected into new binding entered with 'cd')
37
+ * renamed inp and out to _in_ and _out_ (to avoid collisions with actual locals in debugging scope)
38
+ * added third parameter to prompts, the pry instance itself (_pry) see https://github.com/pry/pry/issues/233 for why it's important
39
+ * cd behaviour when no args performs the same as `cd /`
40
+ * commands with keep_retval can now return nil (to suppress output now return 'void' instead)
41
+ * Pry::CommandProcessor::Result introduced
42
+ * Pry.view_clip() modified to be more robust and properly display Class#name
43
+ * edit command when invoked with no args now works like edit -t
44
+ * when edit is invoked (with no args or with -t) inside a multi-line expression input buffer, it dumps that buffer into a temp file and takes you to it
45
+ * got rid of Pry#null_input? since all that was needed was eval_string.empty?
46
+ * cd command now supports complex syntax: cd ../@y/y/../z
47
+ * JRuby is no longer a 2nd class citizen, almost full JRuby support, passing 100% tests
48
+ * added Pry::NAV_PROMPT (great new navigation prompt, per robgleeson) and Pry::SIMPLE_PRINT for simple (IRB-style) print output (just using inspect)
49
+ * _pry_ now passed as 3rd parameter to :before_session hook
50
+ * ls colors now configurable via Pry.config.ls.local_var_color = :bright_red etc
51
+ * ls separator configurable via, e.g Pry.config.ls.separator = " "
52
+ * Pry.view_clip() now only calls inspect on a few immediates, otherwise uses the #<> syntax, which has been truncated further to exclude teh mem address, again related to #245
53
+
1
54
  */7/2011 version 0.9.3
2
55
  * cat --ex (cats 5 lines above and below line in file where exception was raised)
3
56
  * edit --ex (edits line in file where exception was raised)
data/CONTRIBUTORS ADDED
@@ -0,0 +1,13 @@
1
+ 564 John Mair
2
+ 76 Rob Gleeson
3
+ 50 Lee Jarvis
4
+ 46 Mon ouïe
5
+ 18 David Palm
6
+ 13 epitron
7
+ 8 Conrad Irwin
8
+ 6 Ryan Fitzgerald
9
+ 2 Darrick Wiebe
10
+ 2 Xavier Shay
11
+ 2 Eric Christopherson
12
+ 1 Josh Cheek
13
+ 1 Tim Pope
data/README.markdown CHANGED
@@ -1,4 +1,4 @@
1
- ![Alt text](http://dl.dropbox.com/u/15761219/pry_horizontal_red.png)
1
+ ![Alt text](http://dl.dropbox.com/u/26521875/pry_logo_350.png)
2
2
 
3
3
  (C) John Mair (banisterfiend) 2011
4
4
 
@@ -6,8 +6,10 @@ _Get to the code_
6
6
 
7
7
  **Note that JRuby is not yet supported in this release, but will be
8
8
  soon.**
9
+
10
+ **Please** [DONATE](http://www.pledgie.com/campaigns/15899) to the Pry project - Pry was a **huge** amount of work and every donation received is encouraging and supports Pry's continued development!
9
11
 
10
- [Skip to the website](http://pry.github.com) <br />
12
+ [Skip to the website (recommended)](http://pry.github.com) <br />
11
13
  [Skip to the wiki](https://github.com/pry/pry/wiki)
12
14
 
13
15
  Pry is a powerful alternative to the standard IRB shell for Ruby. It is
data/Rakefile CHANGED
@@ -22,8 +22,8 @@ def apply_spec_defaults(s)
22
22
  s.test_files = `git ls-files -- test/*`.split("\n")
23
23
  s.add_dependency("ruby_parser",">=2.0.5")
24
24
  s.add_dependency("coderay",">=0.9.8")
25
- s.add_dependency("slop","~>1.9.0")
26
- s.add_dependency("method_source",">=0.6.0")
25
+ s.add_dependency("slop","~>2.1.0")
26
+ s.add_dependency("method_source",">=0.6.5")
27
27
  s.add_development_dependency("bacon",">=1.1.0")
28
28
  s.add_development_dependency("open4", "~>1.0.1")
29
29
  end
@@ -62,6 +62,20 @@ namespace :ruby do
62
62
  end
63
63
  end
64
64
 
65
+ namespace :jruby do
66
+ spec = Gem::Specification.new do |s|
67
+ apply_spec_defaults(s)
68
+ s.add_dependency("spoon", ">=0.0.1")
69
+ s.platform = "java"
70
+ end
71
+
72
+ Rake::GemPackageTask.new(spec) do |pkg|
73
+ pkg.need_zip = false
74
+ pkg.need_tar = false
75
+ end
76
+ end
77
+
78
+
65
79
  [:mingw32, :mswin32].each do |v|
66
80
  namespace v do
67
81
  spec = Gem::Specification.new do |s|
@@ -78,7 +92,7 @@ end
78
92
  end
79
93
 
80
94
  desc "build all platform gems at once"
81
- task :gems => [:clean, :rmgems, "ruby:gem", "mswin32:gem", "mingw32:gem"]
95
+ task :gems => [:clean, :rmgems, "ruby:gem", "mswin32:gem", "mingw32:gem", "jruby:gem"]
82
96
 
83
97
  desc "remove all platform gems"
84
98
  task :rmgems => ["ruby:clobber_package"]
data/TODO CHANGED
@@ -1,3 +1,25 @@
1
+ 0.9.4
2
+ * include method visiblity in show-doc and stat output
3
+ * tempfile should end in .rb (for edit -t)
4
+ * ls output should not be in array format
5
+ * exceptions should allow access to previous items in the backtrace
6
+ * input should allow multiple objects which are switched to automatically when EOF is reached on the preceding one
7
+ * pry -r should happen in pry
8
+ * more plugin-related commands in pry - see installed ones, see activated ones, see available on rubygems
9
+ * should also allow plugins be explicitly activated as a command line option
10
+ * should not raise if plugin activation fails (should show warning instead)
11
+ * more documentation on CommandContext, etc and also command helpers
12
+ * fix history saving (should not save all of Readline::HISTORY, but only what changed)
13
+ * prevent blank lines going to Readline::HISTORY
14
+ * ensure that cat --ex emulates the `whereami` format - includes line numbers and formatted the same, etc
15
+ * rename inp and out to _inp_ and _out_ otherwise than can overwrite locals by those names when debugging (not good)
16
+ * add source file to stat command
17
+ * make plugins use hash instead of array
18
+ * ensure edit -t has 'edit' alias (no parameters) and dumps eval_string into buffer
19
+ * whitelist exceptions
20
+ * hooks system
21
+ * jruby shell command support
22
+
1
23
  0.9.3
2
24
  * hist command now excludes last line of input (the command invocation itself)
3
25
  * hist now has `history` alias
data/lib/pry.rb CHANGED
@@ -6,27 +6,50 @@ require 'pry/helpers/base_helpers'
6
6
  class Pry
7
7
  # The default hooks - display messages when beginning and ending Pry sessions.
8
8
  DEFAULT_HOOKS = {
9
- :before_session => proc do |out, target|
9
+ :before_session => proc do |out, target, _pry_|
10
10
  # ensure we're actually in a method
11
- meth_name = target.eval('__method__')
12
11
  file = target.eval('__FILE__')
13
12
 
14
13
  # /unknown/ for rbx
15
14
  if file !~ /(\(.*\))|<.*>/ && file !~ /__unknown__/ && file != "" && file != "-e"
16
- Pry.run_command "whereami 5", :output => out, :show_output => true, :context => target, :commands => Pry::Commands
15
+ _pry_.process_line("whereami 5", "", target)
17
16
  end
18
17
  end
19
18
  }
20
19
 
21
- # The default prints
20
+ # The default print
22
21
  DEFAULT_PRINT = proc do |output, value|
22
+ stringified = begin
23
+ value.pretty_inspect
24
+ rescue RescuableException => ex
25
+ nil
26
+ end
27
+
28
+ unless String === stringified
29
+ # Read the class name off of the singleton class to provide a default inspect.
30
+ klass = (class << value; self; end).ancestors.first
31
+ stringified = "#<#{klass}:0x#{value.__id__.to_s(16)}>"
32
+ Helpers::BaseHelpers.stagger_output("output error: #{ex.inspect}", output) if ex
33
+ end
34
+
35
+ Helpers::BaseHelpers.stagger_output("=> #{Helpers::BaseHelpers.colorize_code(stringified)}", output)
36
+ end
37
+
38
+ # may be convenient when working with enormous objects and
39
+ # pretty_print is too slow
40
+ SIMPLE_PRINT = proc do |output, value|
23
41
  begin
24
- Helpers::BaseHelpers.stagger_output("=> #{Helpers::BaseHelpers.colorize_code(value.pretty_inspect)}", output)
25
- rescue NoMethodError
42
+ output.puts "=> #{value.inspect}"
43
+ rescue RescuableException
26
44
  output.puts "=> unknown"
27
45
  end
28
46
  end
29
47
 
48
+ # useful when playing with truly enormous objects
49
+ CLIPPED_PRINT = proc do |output, value|
50
+ output.puts "=> #{Pry.view_clip(value)}"
51
+ end
52
+
30
53
  # Will only show the first line of the backtrace
31
54
  DEFAULT_EXCEPTION_HANDLER = proc do |output, exception|
32
55
  output.puts "#{exception.class}: #{exception.message}"
@@ -35,30 +58,84 @@ class Pry
35
58
 
36
59
  # The default prompt; includes the target and nesting level
37
60
  DEFAULT_PROMPT = [
38
- proc { |target_self, nest_level|
39
- if nest_level == 0
40
- "pry(#{Pry.view_clip(target_self)})> "
41
- else
42
- "pry(#{Pry.view_clip(target_self)}):#{Pry.view_clip(nest_level)}> "
43
- end
44
- },
61
+ proc { |target_self, nest_level, _|
62
+ if nest_level == 0
63
+ "pry(#{Pry.view_clip(target_self)})> "
64
+ else
65
+ "pry(#{Pry.view_clip(target_self)}):#{nest_level}> "
66
+ end
67
+ },
45
68
 
46
- proc { |target_self, nest_level|
47
- if nest_level == 0
48
- "pry(#{Pry.view_clip(target_self)})* "
49
- else
50
- "pry(#{Pry.view_clip(target_self)}):#{Pry.view_clip(nest_level)}* "
51
- end
52
- }
53
- ]
69
+ proc { |target_self, nest_level, _|
70
+ if nest_level == 0
71
+ "pry(#{Pry.view_clip(target_self)})* "
72
+ else
73
+ "pry(#{Pry.view_clip(target_self)}):#{nest_level}* "
74
+ end
75
+ }
76
+ ]
77
+
78
+ # Deal with the ^D key being pressed, different behaviour in
79
+ # different cases:
80
+ # 1) In an expression - behave like `!` command (clear input buffer)
81
+ # 2) At top-level session - behave like `exit command (break out of repl loop)
82
+ # 3) In a nested session - behave like `cd ..` (pop a binding)
83
+ DEFAULT_CONTROL_D_HANDLER = proc do |eval_string, _pry_|
84
+ if !eval_string.empty?
85
+ # clear input buffer
86
+ eval_string.replace("")
87
+ elsif _pry_.binding_stack.one?
88
+ # ^D at top-level breaks out of loop
89
+ _pry_.binding_stack.clear
90
+ throw(:breakout)
91
+ else
92
+ # otherwise just pops a binding
93
+ _pry_.binding_stack.pop
94
+ end
95
+ end
54
96
 
55
97
  # A simple prompt - doesn't display target or nesting level
56
98
  SIMPLE_PROMPT = [proc { ">> " }, proc { " | " }]
57
99
 
58
100
  SHELL_PROMPT = [
59
- proc { |target_self, _| "pry #{Pry.view_clip(target_self)}:#{Dir.pwd} $ " },
60
- proc { |target_self, _| "pry #{Pry.view_clip(target_self)}:#{Dir.pwd} * " }
61
- ]
101
+ proc { |target_self, _, _| "pry #{Pry.view_clip(target_self)}:#{Dir.pwd} $ " },
102
+ proc { |target_self, _, _| "pry #{Pry.view_clip(target_self)}:#{Dir.pwd} * " }
103
+ ]
104
+
105
+ # A prompt that includes the full object path as well as
106
+ # input/output (_in_ and _out_) information. Good for navigation.
107
+ NAV_PROMPT = [
108
+ proc do |_, level, pry|
109
+ tree = pry.binding_stack.map { |b| Pry.view_clip(b.eval("self")) }.join " / "
110
+ "[#{pry.input_array.size}] (pry) #{tree}: #{level}> "
111
+ end,
112
+ proc do |_, level, pry|
113
+ tree = pry.binding_stack.map { |b| Pry.view_clip(b.eval("self")) }.join " / "
114
+ "[#{pry.input_array.size}] (pry) #{tree}: #{level}* "
115
+ end,
116
+ ]
117
+
118
+
119
+ # As a REPL, we often want to catch any unexpected exceptions that may have
120
+ # been raised; however we don't want to go overboard and prevent the user
121
+ # from exiting Pry when they want to.
122
+ module RescuableException
123
+ def self.===(exception)
124
+ case exception
125
+ # Catch when the user hits ^C (Interrupt < SignalException), and assume
126
+ # that they just wanted to stop the in-progress command (just like bash etc.)
127
+ when Interrupt
128
+ true
129
+ # Don't catch signals (particularly not SIGTERM) as these are unlikely to be
130
+ # intended for pry itself. We should also make sure that Kernel#exit works.
131
+ when SystemExit, SignalException
132
+ false
133
+ # All other exceptions will be caught.
134
+ else
135
+ true
136
+ end
137
+ end
138
+ end
62
139
 
63
140
  end
64
141
 
@@ -83,6 +160,7 @@ end
83
160
  require "pry/version"
84
161
  require "pry/history_array"
85
162
  require "pry/helpers"
163
+ require "pry/history"
86
164
  require "pry/command_set"
87
165
  require "pry/commands"
88
166
  require "pry/command_context"
@@ -2,6 +2,13 @@ class Pry
2
2
  # Command contexts are the objects runing each command.
3
3
  # Helper modules can be mixed into this class.
4
4
  class CommandContext
5
+
6
+ # represents a void return value for a command
7
+ VOID_VALUE = Object.new
8
+
9
+ # give it a nice inspect
10
+ def VOID_VALUE.inspect() "void" end
11
+
5
12
  attr_accessor :output
6
13
  attr_accessor :target
7
14
  attr_accessor :captures
@@ -10,6 +17,7 @@ class Pry
10
17
  attr_accessor :opts
11
18
  attr_accessor :command_set
12
19
  attr_accessor :command_processor
20
+ attr_accessor :_pry_
13
21
 
14
22
  # Run a command from another command.
15
23
  # @param [String] command_string The string that invokes the command
@@ -33,6 +41,10 @@ class Pry
33
41
  Pry::Helpers::Text
34
42
  end
35
43
 
44
+ def void
45
+ VOID_VALUE
46
+ end
47
+
36
48
  include Pry::Helpers::BaseHelpers
37
49
  include Pry::Helpers::CommandHelpers
38
50
  end
@@ -2,6 +2,36 @@ require 'forwardable'
2
2
 
3
3
  class Pry
4
4
  class CommandProcessor
5
+
6
+ # Wraps the return result of process_commands, indicates if the
7
+ # result IS a command and what kind of command (e.g void)
8
+ class Result
9
+ attr_reader :retval
10
+
11
+ def initialize(is_command, keep_retval = false, retval = nil)
12
+ @is_command, @keep_retval, @retval = is_command, keep_retval, retval
13
+ end
14
+
15
+ # Is the result a command?
16
+ # @return [Boolean]
17
+ def command?
18
+ @is_command
19
+ end
20
+
21
+ # Is the result a command and if it is, is it a void command?
22
+ # (one that does not return a value)
23
+ # @return [Boolean]
24
+ def void_command?
25
+ (command? && !keep_retval?) || retval == CommandContext::VOID_VALUE
26
+ end
27
+
28
+ # Is the return value kept for this command? (i.e :keep_retval => true)
29
+ # @return [Boolean]
30
+ def keep_retval?
31
+ @keep_retval
32
+ end
33
+ end
34
+
5
35
  extend Forwardable
6
36
 
7
37
  attr_accessor :pry_instance
@@ -10,7 +40,7 @@ class Pry
10
40
  @pry_instance = pry_instance
11
41
  end
12
42
 
13
- def_delegators :@pry_instance, :commands, :nesting, :output
43
+ def_delegators :@pry_instance, :commands, :output
14
44
 
15
45
  # Is the string a valid command?
16
46
  # @param [String] val The string passed in from the Pry prompt.
@@ -54,24 +84,17 @@ class Pry
54
84
  # @return [Array] The command data and arg string pair
55
85
  def command_matched(val, target)
56
86
  _, cmd_data = commands.commands.find do |name, data|
57
-
58
- prefix = Regexp.escape(Pry.config.command_prefix)
87
+ prefix = convert_to_regex(Pry.config.command_prefix)
59
88
  prefix = "(?:#{prefix})?" unless data.options[:use_prefix]
60
89
 
61
90
  command_regex = /^#{prefix}#{convert_to_regex(name)}(?!\S)/
62
91
 
63
- if data.options[:interpolate]
64
- # If interpolation fails then the command cannot be matched,
65
- # so early exit.
66
- begin
67
- interp_val = interpolate_string(val, target)
68
- rescue Exception
69
- next
92
+ if command_regex =~ val
93
+ if data.options[:interpolate]
94
+ val.replace(interpolate_string(val, target))
95
+ command_regex =~ val # re-match with the interpolated string
70
96
  end
71
-
72
- val.replace interp_val if command_regex =~ interp_val
73
- else
74
- command_regex =~ val
97
+ true
75
98
  end
76
99
  end
77
100
 
@@ -87,11 +110,17 @@ class Pry
87
110
  # @param [String] eval_string The cumulative lines of input for
88
111
  # multi-line input.
89
112
  # @param [Binding] target The receiver of the commands.
113
+ # @return [Pry::CommandProcessor::Result] A wrapper object
114
+ # containing info about the result of the command processing
115
+ # (indicating whether it is a command and if it is what kind of
116
+ # command it is.
90
117
  def process_commands(val, eval_string, target)
91
118
 
92
- # no command was matched, so return to caller
93
119
  command, captures, pos = command_matched(val, target)
94
- return if !command
120
+
121
+ # no command was matched, so return to caller
122
+ return Result.new(false) if !command
123
+
95
124
  arg_string = val[pos..-1]
96
125
 
97
126
  # remove the one leading space if it exists
@@ -103,12 +132,13 @@ class Pry
103
132
  :val => val,
104
133
  :arg_string => arg_string,
105
134
  :eval_string => eval_string,
106
- :nesting => nesting,
107
135
  :commands => commands.commands,
108
136
  :captures => captures
109
137
  }
110
138
 
111
- execute_command(target, command.name, options, *(captures + args))
139
+ ret = execute_command(target, command.name, options, *(captures + args))
140
+
141
+ Result.new(true, command.options[:keep_retval], ret)
112
142
  end
113
143
 
114
144
  # Execute a Pry command.
@@ -117,6 +147,7 @@ class Pry
117
147
  # @param [String] command The name of the command to be run.
118
148
  # @param [Hash] options The options to set on the Commands object.
119
149
  # @param [Array] args The command arguments.
150
+ # @return [Object] The value returned by the command
120
151
  def execute_command(target, command, options, *args)
121
152
  context = CommandContext.new
122
153
 
@@ -128,12 +159,12 @@ class Pry
128
159
  context.eval_string = options[:eval_string]
129
160
  context.arg_string = options[:arg_string]
130
161
  context.command_set = commands
162
+ context._pry_ = @pry_instance
131
163
 
132
164
  context.command_processor = self
133
165
 
134
166
  ret = commands.run_command(context, command, *args)
135
167
 
136
- # Tick, tock, im getting rid of this shit soon.
137
168
  options[:val].replace("")
138
169
 
139
170
  ret