pry-doc 0.13.2pre5 → 0.13.2pre6
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ad15e20d11d68e36a2bf2fa5187d1b7551b94c75ac3d1201a2dcd14883247322
|
4
|
+
data.tar.gz: 8c650e9e6250e86806f33e0d4af8214ea9ff8b3fa461d50c708440f6b2723a3b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a3c06161e8a146295adad2bcf8c666e81d063450abc2ded4d07db73eb801d454f4044bf47dcdf58c6f5c772174ce3a57d847acdf77754f40fc3c6df3b9e85478
|
7
|
+
data.tar.gz: f2dc5aaf3918fe5f4f4bbb3fc1c7bd35b921e0ab7bae05e8f2443416cee8034081bdb70437148127d62455415a26fda1ed58207249b7498495e3b0e7b7f2c531
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'fileutils'
|
2
2
|
require_relative 'c_file'
|
3
3
|
require_relative 'symbol_extractor'
|
4
|
+
require_relative 'ruby_source_installer'
|
4
5
|
|
5
6
|
module Pry::CInternals
|
6
7
|
class CodeFetcher
|
@@ -85,8 +86,9 @@ module Pry::CInternals
|
|
85
86
|
|
86
87
|
def self.tagfile
|
87
88
|
tags = File.join(ruby_source_folder, "TAGS")
|
88
|
-
|
89
|
-
|
89
|
+
if !File.exists?(tags)
|
90
|
+
RubySourceInstaller.new(ruby_version, ruby_source_folder).install
|
91
|
+
end
|
90
92
|
@tagfile ||= File.read(tags)
|
91
93
|
end
|
92
94
|
|
@@ -95,73 +97,5 @@ module Pry::CInternals
|
|
95
97
|
def self.check_for_error(message, &block)
|
96
98
|
raise Pry::CommandError, message if $?.to_i != 0 || block && !block.call
|
97
99
|
end
|
98
|
-
|
99
|
-
def self.ask_for_install
|
100
|
-
print "Identifier not found - do you want to install CRuby sources to attempt to resolve the identifier there?\nThis allows the lookup of C internals Y/N "
|
101
|
-
|
102
|
-
if $stdin.gets !~ /^y/i
|
103
|
-
puts "CRuby sources not installed. To prevent being asked again, add `Pry.config.skip_cruby_source = true` to your ~/.pryrc"
|
104
|
-
raise Pry::CommandError, "No definition found."
|
105
|
-
end
|
106
|
-
end
|
107
|
-
|
108
|
-
def self.install_and_setup_ruby_source
|
109
|
-
ask_for_install
|
110
|
-
puts "Downloading and setting up Ruby #{ruby_version} source..."
|
111
|
-
download_ruby
|
112
|
-
generate_tagfile
|
113
|
-
puts "...Finished!"
|
114
|
-
end
|
115
|
-
|
116
|
-
# for windows support need to:
|
117
|
-
# (1) curl -k --fail -L https://github.com/ruby/ruby/archive/v2_4_1.zip
|
118
|
-
# need -k as insecure as don't have root certs
|
119
|
-
# (2) 7z x v2_4_1.zip to extract it (via 7zip, choco install 7zip)
|
120
|
-
# (3) generate etags with: dir /b /s *.c *.h *.y | etags - --no-members
|
121
|
-
# (4) Done!
|
122
|
-
def self.download_ruby
|
123
|
-
FileUtils.mkdir_p(ruby_source_folder)
|
124
|
-
FileUtils.cd(File.dirname(ruby_source_folder)) do
|
125
|
-
%x{ #{curl_cmd} }
|
126
|
-
check_for_error(curl_cmd) { Dir.entries(ruby_source_folder).count > 5 }
|
127
|
-
end
|
128
|
-
end
|
129
|
-
|
130
|
-
def self.curl_cmd
|
131
|
-
if Pry::Platform.windows?
|
132
|
-
%{
|
133
|
-
curl -k --fail -L -O https://github.com/ruby/ruby/archive/v#{ruby_version}.zip & 7z -y x v#{ruby_version}.zip
|
134
|
-
}
|
135
|
-
else
|
136
|
-
"curl --fail -L https://github.com/ruby/ruby/archive/v#{ruby_version}.tar.gz | tar xzvf - 2> /dev/null"
|
137
|
-
end
|
138
|
-
end
|
139
|
-
|
140
|
-
def self.etag_binary
|
141
|
-
@etag_binary ||= if Pry::Platform.linux?
|
142
|
-
arch = RbConfig::CONFIG['arch'] =~ /i(3|6)86/ ? 32 : 64
|
143
|
-
File.join(PryDoc.root, "libexec/linux/etags-#{arch}")
|
144
|
-
elsif Pry::Platform.windows?
|
145
|
-
File.join(PryDoc.root, "libexec/windows/etags")
|
146
|
-
else
|
147
|
-
"etags"
|
148
|
-
end
|
149
|
-
end
|
150
|
-
|
151
|
-
def self.etag_cmd
|
152
|
-
if Pry::Platform.windows?
|
153
|
-
%{dir /b /s *.c *.h *.y | "#{etag_binary}" - --no-members}
|
154
|
-
else
|
155
|
-
"find . -type f -name '*.[chy]' | #{etag_binary} - --no-members"
|
156
|
-
end
|
157
|
-
end
|
158
|
-
|
159
|
-
def self.generate_tagfile
|
160
|
-
FileUtils.cd(ruby_source_folder) do
|
161
|
-
puts "Generating tagfile!"
|
162
|
-
%x{ #{etag_cmd} }
|
163
|
-
check_for_error(etag_cmd) { File.size(File.join(ruby_source_folder, "TAGS")) > 500 }
|
164
|
-
end
|
165
|
-
end
|
166
100
|
end
|
167
101
|
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
module Pry::CInternals
|
2
|
+
class RubySourceInstaller
|
3
|
+
attr_reader :ruby_version
|
4
|
+
attr_reader :ruby_source_folder
|
5
|
+
|
6
|
+
def initialize(ruby_version, ruby_source_folder)
|
7
|
+
@ruby_version = ruby_version
|
8
|
+
@ruby_source_folder = ruby_source_folder
|
9
|
+
end
|
10
|
+
|
11
|
+
def install
|
12
|
+
ask_for_install
|
13
|
+
puts "Downloading and setting up Ruby #{ruby_version} source..."
|
14
|
+
download_ruby
|
15
|
+
generate_tagfile
|
16
|
+
puts "...Finished!"
|
17
|
+
end
|
18
|
+
|
19
|
+
def ask_for_install
|
20
|
+
print "Identifier not found - do you want to install CRuby sources to attempt to resolve the identifier there?\nThis allows the lookup of C internals Y/N "
|
21
|
+
|
22
|
+
if $stdin.gets !~ /^y/i
|
23
|
+
puts "CRuby sources not installed. To prevent being asked again, add `Pry.config.skip_cruby_source = true` to your ~/.pryrc"
|
24
|
+
raise Pry::CommandError, "No definition found."
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def download_ruby
|
29
|
+
FileUtils.mkdir_p(ruby_source_folder)
|
30
|
+
FileUtils.cd(File.dirname(ruby_source_folder)) do
|
31
|
+
%x{ #{curl_cmd} }
|
32
|
+
check_for_error(curl_cmd) { Dir.entries(ruby_source_folder).count > 5 }
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
# @param [String] message Message to display on error
|
37
|
+
# @param [&Block] block Optional assertion
|
38
|
+
def check_for_error(message, &block)
|
39
|
+
raise Pry::CommandError, message if $?.to_i != 0 || block && !block.call
|
40
|
+
end
|
41
|
+
|
42
|
+
def curl_cmd
|
43
|
+
if Pry::Platform.windows?
|
44
|
+
%{
|
45
|
+
curl -k --fail -L -O https://github.com/ruby/ruby/archive/v#{ruby_version}.zip & 7z -y x v#{ruby_version}.zip
|
46
|
+
}
|
47
|
+
else
|
48
|
+
"curl --fail -L https://github.com/ruby/ruby/archive/v#{ruby_version}.tar.gz | tar xzvf - 2> /dev/null"
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def etag_binary
|
53
|
+
@etag_binary ||= if Pry::Platform.linux?
|
54
|
+
arch = RbConfig::CONFIG['arch'] =~ /i(3|6)86/ ? 32 : 64
|
55
|
+
File.join(PryDoc.root, "libexec/linux/etags-#{arch}")
|
56
|
+
elsif Pry::Platform.windows?
|
57
|
+
File.join(PryDoc.root, "libexec/windows/etags")
|
58
|
+
else
|
59
|
+
"etags"
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def etag_cmd
|
64
|
+
if Pry::Platform.windows?
|
65
|
+
%{dir /b /s *.c *.h *.y | "#{etag_binary}" - --no-members}
|
66
|
+
else
|
67
|
+
"find . -type f -name '*.[chy]' | #{etag_binary} - --no-members"
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
def generate_tagfile
|
72
|
+
FileUtils.cd(ruby_source_folder) do
|
73
|
+
puts "Generating tagfile!"
|
74
|
+
%x{ #{etag_cmd} }
|
75
|
+
check_for_error(etag_cmd) { File.size(File.join(ruby_source_folder, "TAGS")) > 500 }
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
data/lib/pry-doc/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pry-doc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.13.
|
4
|
+
version: 0.13.2pre6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Mair (banisterfiend)
|
@@ -131,6 +131,7 @@ files:
|
|
131
131
|
- lib/pry-doc/pry_ext/show_source_with_c_internals.rb
|
132
132
|
- lib/pry-doc/pry_ext/show_source_with_c_internals/c_file.rb
|
133
133
|
- lib/pry-doc/pry_ext/show_source_with_c_internals/code_fetcher.rb
|
134
|
+
- lib/pry-doc/pry_ext/show_source_with_c_internals/ruby_source_installer.rb
|
134
135
|
- lib/pry-doc/pry_ext/show_source_with_c_internals/symbol_extractor.rb
|
135
136
|
- lib/pry-doc/version.rb
|
136
137
|
- libexec/linux/etags-32
|