Class: Tapioca::Gemfile::GemSpec
- Inherits:
-
Object
- Object
- Tapioca::Gemfile::GemSpec
show all
- Extended by:
- T::Sig
- Includes:
- Tapioca::GemHelper
- Defined in:
- lib/tapioca/gemfile.rb
Constant Summary
collapse
- IGNORED_GEMS =
T.let(
[
"sorbet",
"sorbet-static",
"sorbet-runtime",
"sorbet-static-and-runtime",
"debug",
"irb",
"fakefs",
].freeze,
T::Array[String],
)
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
#gem_in_app_dir?, #gem_in_bundle_path?, #gem_in_ruby_path?, #to_realpath
Constructor Details
#initialize(spec) ⇒ GemSpec
Returns a new instance of GemSpec.
136
137
138
139
140
141
142
143
|
# File 'lib/tapioca/gemfile.rb', line 136
def initialize(spec)
@spec = T.let(spec, Tapioca::Gemfile::Spec)
real_gem_path = to_realpath(@spec.full_gem_path)
@full_gem_path = T.let(real_gem_path, String)
@version = T.let(version_string, String)
@exported_rbi_files = T.let(nil, T.nilable(T::Array[String]))
@files = T.let(collect_files, T::Array[Pathname])
end
|
Instance Attribute Details
#files ⇒ Object
Returns the value of attribute files.
133
134
135
|
# File 'lib/tapioca/gemfile.rb', line 133
def files
@files
end
|
#full_gem_path ⇒ Object
Returns the value of attribute full_gem_path.
130
131
132
|
# File 'lib/tapioca/gemfile.rb', line 130
def full_gem_path
@full_gem_path
end
|
#version ⇒ Object
Returns the value of attribute version.
130
131
132
|
# File 'lib/tapioca/gemfile.rb', line 130
def version
@version
end
|
Class Method Details
.spec_lookup_by_file_path ⇒ Object
104
105
106
107
108
109
110
111
112
113
|
# File 'lib/tapioca/gemfile.rb', line 104
def spec_lookup_by_file_path
@lookup ||= T.let(
[*::Gem::Specification.default_stubs, *::Gem::Specification.stubs]
.map! { |spec| new(spec.to_spec) }
.flat_map do |spec|
spec.files.filter_map { |file| [file.realpath.to_s, spec] if file.exist? }
end.to_h,
T.nilable(T::Hash[String, Gemfile::GemSpec]),
)
end
|
Instance Method Details
#==(other) ⇒ Object
146
147
148
|
# File 'lib/tapioca/gemfile.rb', line 146
def ==(other)
GemSpec === other && other.name == name && other.version == version
end
|
#contains_path?(path) ⇒ Boolean
171
172
173
174
175
176
177
|
# File 'lib/tapioca/gemfile.rb', line 171
def contains_path?(path)
if default_gem?
files.any? { |file| file.to_s == to_realpath(path) }
else
path_in_dir?(to_realpath(path), full_gem_path) || has_parent_gemspec?(path)
end
end
|
#dependencies ⇒ Object
161
162
163
|
# File 'lib/tapioca/gemfile.rb', line 161
def dependencies
@spec.dependencies
end
|
#export_rbi_files? ⇒ Boolean
201
202
203
|
# File 'lib/tapioca/gemfile.rb', line 201
def export_rbi_files?
exported_rbi_files.any?
end
|
#exported_rbi_files ⇒ Object
196
197
198
|
# File 'lib/tapioca/gemfile.rb', line 196
def exported_rbi_files
@exported_rbi_files ||= Dir.glob("#{full_gem_path}/rbi/**/*.rbi").sort
end
|
#exported_rbi_tree ⇒ Object
206
207
208
209
210
211
212
213
214
215
|
# File 'lib/tapioca/gemfile.rb', line 206
def exported_rbi_tree
rewriter = RBI::Rewriters::Merge.new(keep: RBI::Rewriters::Merge::Keep::NONE)
exported_rbi_files.each do |file|
rbi = RBI::Parser.parse_file(file)
rewriter.merge(rbi)
end
rewriter.tree
end
|
#ignore?(gemfile_dir) ⇒ Boolean
151
152
153
|
# File 'lib/tapioca/gemfile.rb', line 151
def ignore?(gemfile_dir)
gem_ignored? || gem_in_app_dir?(gemfile_dir, full_gem_path)
end
|
#name ⇒ Object
156
157
158
|
# File 'lib/tapioca/gemfile.rb', line 156
def name
@spec.name
end
|
#parse_yard_docs ⇒ Object
180
181
182
183
184
185
186
187
188
189
190
191
192
193
|
# File 'lib/tapioca/gemfile.rb', line 180
def parse_yard_docs
files.each do |path|
YARD.parse(path.to_s, [], Logger::Severity::FATAL)
rescue RangeError
[]
end
end
|
#rbi_file_name ⇒ Object
166
167
168
|
# File 'lib/tapioca/gemfile.rb', line 166
def rbi_file_name
"#{name}@#{version}.rbi"
end
|
#relative_path_for(file) ⇒ Object
218
219
220
221
222
223
224
|
# File 'lib/tapioca/gemfile.rb', line 218
def relative_path_for(file)
if default_gem?
file.realpath.relative_path_from(RbConfig::CONFIG["rubylibdir"])
else
file.realpath.relative_path_from(full_gem_path)
end
end
|