pry 0.12.2-java → 0.13.0-java
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/CHANGELOG.md +110 -1
- data/LICENSE +1 -1
- data/README.md +331 -269
- data/bin/pry +5 -0
- data/lib/pry.rb +133 -119
- data/lib/pry/basic_object.rb +8 -4
- data/lib/pry/block_command.rb +22 -0
- data/lib/pry/class_command.rb +194 -0
- data/lib/pry/cli.rb +40 -31
- data/lib/pry/code.rb +39 -27
- data/lib/pry/code/code_file.rb +28 -24
- data/lib/pry/code/code_range.rb +4 -2
- data/lib/pry/code/loc.rb +15 -8
- data/lib/pry/code_object.rb +40 -38
- data/lib/pry/color_printer.rb +47 -46
- data/lib/pry/command.rb +166 -369
- data/lib/pry/command_set.rb +76 -73
- data/lib/pry/command_state.rb +31 -0
- data/lib/pry/commands/amend_line.rb +86 -81
- data/lib/pry/commands/bang.rb +18 -14
- data/lib/pry/commands/bang_pry.rb +15 -11
- data/lib/pry/commands/cat.rb +61 -54
- data/lib/pry/commands/cat/abstract_formatter.rb +23 -18
- data/lib/pry/commands/cat/exception_formatter.rb +71 -60
- data/lib/pry/commands/cat/file_formatter.rb +55 -49
- data/lib/pry/commands/cat/input_expression_formatter.rb +35 -30
- data/lib/pry/commands/cd.rb +40 -35
- data/lib/pry/commands/change_inspector.rb +29 -22
- data/lib/pry/commands/change_prompt.rb +44 -39
- data/lib/pry/commands/clear_screen.rb +16 -10
- data/lib/pry/commands/code_collector.rb +148 -133
- data/lib/pry/commands/disable_pry.rb +23 -19
- data/lib/pry/commands/easter_eggs.rb +19 -30
- data/lib/pry/commands/edit.rb +184 -161
- data/lib/pry/commands/edit/exception_patcher.rb +21 -17
- data/lib/pry/commands/edit/file_and_line_locator.rb +34 -23
- data/lib/pry/commands/exit.rb +39 -35
- data/lib/pry/commands/exit_all.rb +24 -20
- data/lib/pry/commands/exit_program.rb +20 -16
- data/lib/pry/commands/find_method.rb +168 -160
- data/lib/pry/commands/fix_indent.rb +16 -12
- data/lib/pry/commands/help.rb +140 -133
- data/lib/pry/commands/hist.rb +151 -150
- data/lib/pry/commands/import_set.rb +20 -16
- data/lib/pry/commands/jump_to.rb +25 -21
- data/lib/pry/commands/list_inspectors.rb +35 -28
- data/lib/pry/commands/ls.rb +124 -102
- data/lib/pry/commands/ls/constants.rb +59 -42
- data/lib/pry/commands/ls/formatter.rb +50 -46
- data/lib/pry/commands/ls/globals.rb +38 -34
- data/lib/pry/commands/ls/grep.rb +17 -13
- data/lib/pry/commands/ls/instance_vars.rb +29 -27
- data/lib/pry/commands/ls/interrogatable.rb +18 -12
- data/lib/pry/commands/ls/jruby_hacks.rb +47 -41
- data/lib/pry/commands/ls/local_names.rb +26 -22
- data/lib/pry/commands/ls/local_vars.rb +38 -28
- data/lib/pry/commands/ls/ls_entity.rb +47 -51
- data/lib/pry/commands/ls/methods.rb +44 -43
- data/lib/pry/commands/ls/methods_helper.rb +46 -42
- data/lib/pry/commands/ls/self_methods.rb +23 -22
- data/lib/pry/commands/nesting.rb +21 -17
- data/lib/pry/commands/play.rb +93 -82
- data/lib/pry/commands/pry_backtrace.rb +24 -17
- data/lib/pry/commands/pry_version.rb +15 -11
- data/lib/pry/commands/raise_up.rb +27 -22
- data/lib/pry/commands/reload_code.rb +60 -48
- data/lib/pry/commands/reset.rb +16 -12
- data/lib/pry/commands/ri.rb +55 -45
- data/lib/pry/commands/save_file.rb +45 -43
- data/lib/pry/commands/shell_command.rb +51 -51
- data/lib/pry/commands/shell_mode.rb +21 -17
- data/lib/pry/commands/show_doc.rb +81 -68
- data/lib/pry/commands/show_info.rb +189 -171
- data/lib/pry/commands/show_input.rb +16 -11
- data/lib/pry/commands/show_source.rb +109 -45
- data/lib/pry/commands/stat.rb +35 -31
- data/lib/pry/commands/switch_to.rb +21 -15
- data/lib/pry/commands/toggle_color.rb +20 -16
- data/lib/pry/commands/watch_expression.rb +89 -86
- data/lib/pry/commands/watch_expression/expression.rb +32 -27
- data/lib/pry/commands/whereami.rb +156 -148
- data/lib/pry/commands/wtf.rb +75 -50
- data/lib/pry/config.rb +311 -25
- data/lib/pry/config/attributable.rb +22 -0
- data/lib/pry/config/lazy_value.rb +29 -0
- data/lib/pry/config/memoized_value.rb +34 -0
- data/lib/pry/config/value.rb +24 -0
- data/lib/pry/control_d_handler.rb +28 -0
- data/lib/pry/core_extensions.rb +9 -7
- data/lib/pry/editor.rb +48 -21
- data/lib/pry/env.rb +18 -0
- data/lib/pry/exception_handler.rb +43 -0
- data/lib/pry/exceptions.rb +13 -16
- data/lib/pry/forwardable.rb +5 -1
- data/lib/pry/helpers.rb +2 -0
- data/lib/pry/helpers/base_helpers.rb +68 -197
- data/lib/pry/helpers/command_helpers.rb +50 -61
- data/lib/pry/helpers/documentation_helpers.rb +20 -13
- data/lib/pry/helpers/options_helpers.rb +14 -7
- data/lib/pry/helpers/platform.rb +7 -5
- data/lib/pry/helpers/table.rb +33 -26
- data/lib/pry/helpers/text.rb +17 -14
- data/lib/pry/history.rb +48 -56
- data/lib/pry/hooks.rb +21 -12
- data/lib/pry/indent.rb +54 -50
- data/lib/pry/input_completer.rb +248 -230
- data/lib/pry/input_lock.rb +8 -9
- data/lib/pry/inspector.rb +36 -24
- data/lib/pry/last_exception.rb +45 -45
- data/lib/pry/method.rb +141 -94
- data/lib/pry/method/disowned.rb +16 -4
- data/lib/pry/method/patcher.rb +12 -3
- data/lib/pry/method/weird_method_locator.rb +68 -44
- data/lib/pry/object_path.rb +33 -25
- data/lib/pry/output.rb +121 -35
- data/lib/pry/pager.rb +41 -42
- data/lib/pry/plugins.rb +25 -8
- data/lib/pry/prompt.rb +123 -54
- data/lib/pry/pry_class.rb +61 -98
- data/lib/pry/pry_instance.rb +217 -215
- data/lib/pry/repl.rb +18 -22
- data/lib/pry/repl_file_loader.rb +27 -21
- data/lib/pry/ring.rb +11 -6
- data/lib/pry/slop.rb +574 -563
- data/lib/pry/slop/commands.rb +164 -169
- data/lib/pry/slop/option.rb +172 -168
- data/lib/pry/syntax_highlighter.rb +26 -0
- data/lib/pry/system_command_handler.rb +17 -0
- data/lib/pry/testable.rb +59 -61
- data/lib/pry/testable/evalable.rb +21 -12
- data/lib/pry/testable/mockable.rb +18 -10
- data/lib/pry/testable/pry_tester.rb +71 -56
- data/lib/pry/testable/utility.rb +29 -21
- data/lib/pry/testable/variables.rb +49 -43
- data/lib/pry/version.rb +3 -1
- data/lib/pry/warning.rb +27 -0
- data/lib/pry/wrapped_module.rb +51 -42
- data/lib/pry/wrapped_module/candidate.rb +21 -14
- metadata +31 -30
- data/lib/pry/commands.rb +0 -6
- data/lib/pry/commands/disabled_commands.rb +0 -2
- data/lib/pry/commands/gem_cd.rb +0 -26
- data/lib/pry/commands/gem_install.rb +0 -32
- data/lib/pry/commands/gem_list.rb +0 -33
- data/lib/pry/commands/gem_open.rb +0 -29
- data/lib/pry/commands/gem_readme.rb +0 -25
- data/lib/pry/commands/gem_search.rb +0 -40
- data/lib/pry/commands/gem_stats.rb +0 -83
- data/lib/pry/commands/gist.rb +0 -102
- data/lib/pry/commands/install_command.rb +0 -54
- data/lib/pry/config/behavior.rb +0 -255
- data/lib/pry/config/convenience.rb +0 -28
- data/lib/pry/config/default.rb +0 -159
- data/lib/pry/config/memoization.rb +0 -48
- data/lib/pry/platform.rb +0 -91
- data/lib/pry/rubygem.rb +0 -84
- data/lib/pry/terminal.rb +0 -91
data/lib/pry/commands.rb
DELETED
data/lib/pry/commands/gem_cd.rb
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
class Pry
|
2
|
-
class Command::GemCd < Pry::ClassCommand
|
3
|
-
match 'gem-cd'
|
4
|
-
group 'Gems'
|
5
|
-
description "Change working directory to specified gem's directory."
|
6
|
-
command_options argument_required: true
|
7
|
-
|
8
|
-
banner <<-'BANNER'
|
9
|
-
Usage: gem-cd GEM_NAME
|
10
|
-
|
11
|
-
Change the current working directory to that in which the given gem is
|
12
|
-
installed.
|
13
|
-
BANNER
|
14
|
-
|
15
|
-
def process(gem)
|
16
|
-
Dir.chdir(Rubygem.spec(gem).full_gem_path)
|
17
|
-
output.puts(Dir.pwd)
|
18
|
-
end
|
19
|
-
|
20
|
-
def complete(str)
|
21
|
-
Rubygem.complete(str)
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
Pry::Commands.add_command(Pry::Command::GemCd)
|
26
|
-
end
|
@@ -1,32 +0,0 @@
|
|
1
|
-
class Pry
|
2
|
-
class Command::GemInstall < Pry::ClassCommand
|
3
|
-
match 'gem-install'
|
4
|
-
group 'Gems'
|
5
|
-
description 'Install a gem and refresh the gem cache.'
|
6
|
-
command_options argument_required: true
|
7
|
-
|
8
|
-
banner <<-'BANNER'
|
9
|
-
Usage: gem-install GEM_NAME
|
10
|
-
|
11
|
-
Installs the given gem, refreshes the gem cache, and requires the gem for you
|
12
|
-
based on a best guess from the gem name.
|
13
|
-
|
14
|
-
gem-install pry-stack_explorer
|
15
|
-
BANNER
|
16
|
-
|
17
|
-
def setup
|
18
|
-
require 'rubygems/dependency_installer' unless defined? Gem::DependencyInstaller
|
19
|
-
end
|
20
|
-
|
21
|
-
def process(gem)
|
22
|
-
Rubygem.install(gem)
|
23
|
-
output.puts "Gem `#{ green(gem) }` installed."
|
24
|
-
require gem
|
25
|
-
rescue LoadError
|
26
|
-
require_path = gem.split('-').join('/')
|
27
|
-
require require_path
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
Pry::Commands.add_command(Pry::Command::GemInstall)
|
32
|
-
end
|
@@ -1,33 +0,0 @@
|
|
1
|
-
class Pry
|
2
|
-
class Command::GemList < Pry::ClassCommand
|
3
|
-
match 'gem-list'
|
4
|
-
group 'Gems'
|
5
|
-
description 'List and search installed gems.'
|
6
|
-
|
7
|
-
banner <<-'BANNER'
|
8
|
-
Usage: gem-list [REGEX]
|
9
|
-
|
10
|
-
List all installed gems, when a regex is provided, limit the output to those
|
11
|
-
that match the regex.
|
12
|
-
BANNER
|
13
|
-
|
14
|
-
def process(pattern = nil)
|
15
|
-
pattern = Regexp.compile(pattern || '')
|
16
|
-
gems = Rubygem.list(pattern).group_by(&:name)
|
17
|
-
|
18
|
-
gems.each do |gem, specs|
|
19
|
-
specs.sort! do |a,b|
|
20
|
-
Gem::Version.new(b.version) <=> Gem::Version.new(a.version)
|
21
|
-
end
|
22
|
-
|
23
|
-
versions = specs.each_with_index.map do |spec, index|
|
24
|
-
index == 0 ? bright_green(spec.version.to_s) : green(spec.version.to_s)
|
25
|
-
end
|
26
|
-
|
27
|
-
output.puts "#{default gem} (#{versions.join ', '})"
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
Pry::Commands.add_command(Pry::Command::GemList)
|
33
|
-
end
|
@@ -1,29 +0,0 @@
|
|
1
|
-
class Pry
|
2
|
-
class Command::GemOpen < Pry::ClassCommand
|
3
|
-
match 'gem-open'
|
4
|
-
group 'Gems'
|
5
|
-
description 'Opens the working directory of the gem in your editor.'
|
6
|
-
command_options argument_required: true
|
7
|
-
|
8
|
-
banner <<-'BANNER'
|
9
|
-
Usage: gem-open GEM_NAME
|
10
|
-
|
11
|
-
Change the current working directory to that in which the given gem is
|
12
|
-
installed, and then opens your text editor.
|
13
|
-
|
14
|
-
gem-open pry-exception_explorer
|
15
|
-
BANNER
|
16
|
-
|
17
|
-
def process(gem)
|
18
|
-
Dir.chdir(Rubygem.spec(gem).full_gem_path) do
|
19
|
-
Pry::Editor.new(_pry_).invoke_editor(".", 0, false)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
def complete(str)
|
24
|
-
Rubygem.complete(str)
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
Pry::Commands.add_command(Pry::Command::GemOpen)
|
29
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
class Pry::Command::GemReadme < Pry::ClassCommand
|
2
|
-
match 'gem-readme'
|
3
|
-
description 'Show the readme bundled with a rubygem'
|
4
|
-
group 'Gems'
|
5
|
-
command_options argument_required: true
|
6
|
-
banner <<-BANNER
|
7
|
-
gem-readme gem
|
8
|
-
Show the readme bundled with a rubygem
|
9
|
-
BANNER
|
10
|
-
|
11
|
-
def process(name)
|
12
|
-
spec = Gem::Specification.find_by_name(name)
|
13
|
-
glob = File.join(spec.full_gem_path, 'README*')
|
14
|
-
readme = Dir[glob][0]
|
15
|
-
if File.exist?(readme.to_s)
|
16
|
-
_pry_.pager.page File.read(readme)
|
17
|
-
else
|
18
|
-
raise Pry::CommandError, "Gem '#{name}' doesn't appear to have a README"
|
19
|
-
end
|
20
|
-
rescue Gem::LoadError
|
21
|
-
raise Pry::CommandError, "Gem '#{name}' wasn't found. Are you sure it is installed?"
|
22
|
-
end
|
23
|
-
|
24
|
-
Pry::Commands.add_command(self)
|
25
|
-
end
|
@@ -1,40 +0,0 @@
|
|
1
|
-
class Pry::Command::GemSearch < Pry::ClassCommand
|
2
|
-
match 'gem-search'
|
3
|
-
description 'Search for a gem with the rubygems.org JSON API'
|
4
|
-
group 'Gems'
|
5
|
-
command_options argument_required: true
|
6
|
-
banner <<-BANNER
|
7
|
-
gem-search [options] gem
|
8
|
-
Search for a gem with the rubygems.org HTTP API
|
9
|
-
BANNER
|
10
|
-
|
11
|
-
API_ENDPOINT = 'https://rubygems.org/api/v1/search.json'
|
12
|
-
|
13
|
-
def setup
|
14
|
-
require 'json' unless defined?(JSON)
|
15
|
-
require 'net/http' unless defined?(Net::HTTP)
|
16
|
-
end
|
17
|
-
|
18
|
-
def options(opt)
|
19
|
-
opt.on :l, :limit, 'Limit the number of results (max: 30)',
|
20
|
-
default: 10,
|
21
|
-
as: Integer,
|
22
|
-
argument: true
|
23
|
-
end
|
24
|
-
|
25
|
-
def process(str)
|
26
|
-
uri = URI.parse(API_ENDPOINT)
|
27
|
-
uri.query = URI.encode_www_form(query: str)
|
28
|
-
gems = JSON.load Net::HTTP.get(uri)
|
29
|
-
_pry_.pager.page list_as_string(gems, opts[:limit])
|
30
|
-
end
|
31
|
-
|
32
|
-
private
|
33
|
-
def list_as_string(gems, limit = 10)
|
34
|
-
gems[0..limit - 1].map do |gem|
|
35
|
-
name, version, info = gem.values_at 'name', 'version', 'info'
|
36
|
-
"#{bold(name)} #{bold('v' + version)} \n#{info}\n\n"
|
37
|
-
end.join
|
38
|
-
end
|
39
|
-
Pry::Commands.add_command(self)
|
40
|
-
end
|
@@ -1,83 +0,0 @@
|
|
1
|
-
class Pry::Command::GemStat < Pry::ClassCommand
|
2
|
-
require 'json'
|
3
|
-
require 'net/http'
|
4
|
-
STAT_HOST = "rubygems.org"
|
5
|
-
STAT_PORT = 443
|
6
|
-
STAT_PATH = "/api/v1/gems/%s.json"
|
7
|
-
FAIL_WHALE = <<-FAILWHALE
|
8
|
-
W W W
|
9
|
-
W W W W
|
10
|
-
'. W
|
11
|
-
.-""-._ \ \.--|
|
12
|
-
/ "-..__) .-'
|
13
|
-
| _ /
|
14
|
-
\'-.__, .__.,'
|
15
|
-
`'----'._\--'
|
16
|
-
VVVVVVVVVVVVVVVVVVVVV
|
17
|
-
FAILWHALE
|
18
|
-
|
19
|
-
match 'gem-stat'
|
20
|
-
description 'Show the statistics of a gem (requires internet connection)'
|
21
|
-
group 'Gems'
|
22
|
-
command_options argument_required: true
|
23
|
-
banner <<-BANNER
|
24
|
-
gem-stats name
|
25
|
-
|
26
|
-
Show the statistics of a gem.
|
27
|
-
Requires an internet connection.
|
28
|
-
BANNER
|
29
|
-
|
30
|
-
def process(name)
|
31
|
-
client = Net::HTTP.start STAT_HOST, STAT_PORT, use_ssl: true
|
32
|
-
res = client.get STAT_PATH % URI.encode_www_form_component(name)
|
33
|
-
case res
|
34
|
-
when Net::HTTPOK
|
35
|
-
_pry_.pager.page format_gem(JSON.parse(res.body))
|
36
|
-
when Net::HTTPServiceUnavailable
|
37
|
-
_pry_.pager.page <<-FAILURE
|
38
|
-
#{bright_blue(FAIL_WHALE)}
|
39
|
-
#{bright_red('Ruby On Rails')}
|
40
|
-
#{bright_red('Net::HTTPServiceUnavailable')}
|
41
|
-
FAILURE
|
42
|
-
else
|
43
|
-
raise Pry::CommandError, "Bad response (#{res.class})"
|
44
|
-
end
|
45
|
-
ensure
|
46
|
-
client.finish if client
|
47
|
-
end
|
48
|
-
|
49
|
-
private
|
50
|
-
def format_gem(h)
|
51
|
-
h = Pry::Config.from_hash(h, nil)
|
52
|
-
format_str = unindent <<-FORMAT
|
53
|
-
%{name} %{version}
|
54
|
-
--
|
55
|
-
Total Downloads : %{downloads}
|
56
|
-
Version Downloads : %{version_downloads}
|
57
|
-
|
58
|
-
#{red('Dependencies')} (runtime)
|
59
|
-
--
|
60
|
-
%{rdependencies}
|
61
|
-
|
62
|
-
#{red('Dependencies')} (development)
|
63
|
-
%{ddependencies}
|
64
|
-
FORMAT
|
65
|
-
format_str % {name: green(h.name),
|
66
|
-
version: bold("v#{h.version}"),
|
67
|
-
downloads: h.downloads,
|
68
|
-
version_downloads: h.version_downloads,
|
69
|
-
rdependencies: format_dependencies(h.dependencies.runtime),
|
70
|
-
ddependencies: format_dependencies(h.dependencies.development)}
|
71
|
-
end
|
72
|
-
|
73
|
-
def format_dependencies(rdeps)
|
74
|
-
return bold('None') if rdeps.empty?
|
75
|
-
|
76
|
-
with_line_numbers(
|
77
|
-
rdeps.map { |h| "#{h['name']} (#{h['requirements']})" }.join("\n"),
|
78
|
-
1,
|
79
|
-
:bold
|
80
|
-
)
|
81
|
-
end
|
82
|
-
Pry::Commands.add_command(self)
|
83
|
-
end
|
data/lib/pry/commands/gist.rb
DELETED
@@ -1,102 +0,0 @@
|
|
1
|
-
class Pry
|
2
|
-
class Command::Gist < Pry::ClassCommand
|
3
|
-
match 'gist'
|
4
|
-
group 'Misc'
|
5
|
-
description 'Upload code, docs, history to https://gist.github.com/.'
|
6
|
-
command_options requires_gem: "gist"
|
7
|
-
|
8
|
-
banner <<-'BANNER'
|
9
|
-
Usage: gist [OPTIONS] [--help]
|
10
|
-
|
11
|
-
The gist command enables you to gist code from files and methods to github.
|
12
|
-
|
13
|
-
gist -i 20 --lines 1..3
|
14
|
-
gist Pry#repl --lines 1..-1
|
15
|
-
gist Rakefile --lines 5
|
16
|
-
BANNER
|
17
|
-
|
18
|
-
def setup
|
19
|
-
require 'gist'
|
20
|
-
end
|
21
|
-
|
22
|
-
def options(opt)
|
23
|
-
CodeCollector.inject_options(opt)
|
24
|
-
opt.on :login, "Authenticate the gist gem with GitHub"
|
25
|
-
opt.on :p, :public, "Create a public gist (default: false)", default: false
|
26
|
-
opt.on :clip, "Copy the selected content to clipboard instead, do NOT gist it", default: false
|
27
|
-
end
|
28
|
-
|
29
|
-
def process
|
30
|
-
return ::Gist.login! if opts.present?(:login)
|
31
|
-
|
32
|
-
cc = CodeCollector.new(args, opts, _pry_)
|
33
|
-
|
34
|
-
if cc.content =~ /\A\s*\z/
|
35
|
-
raise CommandError, "Found no code to gist."
|
36
|
-
end
|
37
|
-
|
38
|
-
if opts.present?(:clip)
|
39
|
-
clipboard_content(cc.content)
|
40
|
-
else
|
41
|
-
# we're overriding the default behavior of the 'in' option (as
|
42
|
-
# defined on CodeCollector) with our local behaviour.
|
43
|
-
content = opts.present?(:in) ? input_content : cc.content
|
44
|
-
gist_content content, cc.file
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
def clipboard_content(content)
|
49
|
-
::Gist.copy(content)
|
50
|
-
output.puts "Copied content to clipboard!"
|
51
|
-
end
|
52
|
-
|
53
|
-
def input_content
|
54
|
-
content = ""
|
55
|
-
CodeCollector.input_expression_ranges.each do |range|
|
56
|
-
input_expressions = _pry_.input_ring[range] || []
|
57
|
-
Array(input_expressions).each_with_index do |code, index|
|
58
|
-
corrected_index = index + range.first
|
59
|
-
if code && code != ""
|
60
|
-
content << code
|
61
|
-
if code !~ /;\Z/
|
62
|
-
content << "#{comment_expression_result_for_gist(_pry_.config.gist.inspecter.call(_pry_.output_ring[corrected_index]))}"
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
content
|
69
|
-
end
|
70
|
-
|
71
|
-
def comment_expression_result_for_gist(result)
|
72
|
-
content = ""
|
73
|
-
result.lines.each_with_index do |line, index|
|
74
|
-
if index == 0
|
75
|
-
content << "# => #{line}"
|
76
|
-
else
|
77
|
-
content << "# #{line}"
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
content
|
82
|
-
end
|
83
|
-
|
84
|
-
def gist_content(content, filename)
|
85
|
-
response = ::Gist.gist(content, filename: filename || "pry_gist.rb", public: !!opts[:p])
|
86
|
-
if response
|
87
|
-
url = response['html_url']
|
88
|
-
message = "Gist created at URL #{url}"
|
89
|
-
begin
|
90
|
-
::Gist.copy(url)
|
91
|
-
message << ", which is now in the clipboard."
|
92
|
-
rescue ::Gist::ClipboardError
|
93
|
-
end
|
94
|
-
|
95
|
-
output.puts message
|
96
|
-
end
|
97
|
-
end
|
98
|
-
end
|
99
|
-
|
100
|
-
Pry::Commands.add_command(Pry::Command::Gist)
|
101
|
-
Pry::Commands.alias_command 'clipit', 'gist --clip'
|
102
|
-
end
|
@@ -1,54 +0,0 @@
|
|
1
|
-
class Pry
|
2
|
-
class Command::InstallCommand < Pry::ClassCommand
|
3
|
-
match 'install-command'
|
4
|
-
group 'Commands'
|
5
|
-
description 'Install a disabled command.'
|
6
|
-
|
7
|
-
banner <<-'BANNER'
|
8
|
-
Usage: install-command COMMAND
|
9
|
-
|
10
|
-
Installs the gems necessary to run the given COMMAND. You will generally not
|
11
|
-
need to run this unless told to by an error message.
|
12
|
-
BANNER
|
13
|
-
|
14
|
-
def process(name)
|
15
|
-
require 'rubygems/dependency_installer' unless defined? Gem::DependencyInstaller
|
16
|
-
command = find_command(name)
|
17
|
-
|
18
|
-
unless command
|
19
|
-
output.puts "Command #{ green(name) } is not found"
|
20
|
-
return
|
21
|
-
end
|
22
|
-
|
23
|
-
if command_dependencies_met?(command.options)
|
24
|
-
output.puts "Dependencies for #{ green(name) } are met. Nothing to do"
|
25
|
-
return
|
26
|
-
end
|
27
|
-
|
28
|
-
output.puts "Attempting to install #{ green(name) } command..."
|
29
|
-
gems_to_install = Array(command.options[:requires_gem])
|
30
|
-
|
31
|
-
gems_to_install.each do |g|
|
32
|
-
next if Rubygem.installed?(g)
|
33
|
-
|
34
|
-
output.puts "Installing #{ green(g) } gem..."
|
35
|
-
Rubygem.install(g)
|
36
|
-
end
|
37
|
-
|
38
|
-
gems_to_install.each do |g|
|
39
|
-
begin
|
40
|
-
require g
|
41
|
-
rescue LoadError
|
42
|
-
fail_msg = "Required gem #{ green(g) } installed but not found."
|
43
|
-
fail_msg += " Aborting command installation\n"
|
44
|
-
fail_msg += 'Tips: 1. Check your PATH; 2. Run `bundle update`'
|
45
|
-
raise CommandError, fail_msg
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
output.puts "Installation of #{ green(name) } successful! Type `help #{name}` for information"
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
Pry::Commands.add_command(Pry::Command::InstallCommand)
|
54
|
-
end
|