MCPcopy Create free account
hub / github.com/aboutcode-org/scancode-toolkit / parse

Method parse

src/packagedcode/rubygems.py:240–297  ·  view source on GitHub ↗
(cls, location, package_only=False)

Source from the content-addressed store, hash-verified

238
239 @classmethod
240 def parse(cls, location, package_only=False):
241 gemfile_lock = GemfileLockParser(location)
242 all_gems = list(gemfile_lock.all_gems.values())
243 if not all_gems:
244 return
245
246 primary_gem = gemfile_lock.primary_gem
247 if primary_gem:
248 deps = [
249 models.DependentPackage(
250 purl=PackageURL(
251 type='gem',
252 name=dep.name,
253 version=dep.version
254 ).to_string(),
255 extracted_requirement=', '.join(dep.requirements),
256 scope='dependencies',
257 is_runtime=True,
258 is_optional=False,
259 is_pinned=True,
260 ) for dep in all_gems if dep != primary_gem
261 ]
262 urls = get_urls(primary_gem.name, primary_gem.version)
263
264 package_data = dict(
265 datasource_id=cls.datasource_id,
266 primary_language=cls.default_primary_language,
267 type=cls.default_package_type,
268 name=primary_gem.name,
269 version=primary_gem.version,
270 dependencies=deps,
271 **urls
272 )
273 yield models.PackageData.from_data(package_data, package_only)
274 else:
275 deps = [
276 models.DependentPackage(
277 purl=PackageURL(
278 type='gem',
279 name=gem.name,
280 version=gem.version
281 ).to_string(),
282 extracted_requirement=', '.join(gem.requirements),
283 # FIXME: get proper scope... This does not seem right
284 scope='dependencies',
285 is_runtime=True,
286 is_optional=False,
287 is_pinned=True,
288 ) for gem in all_gems
289 ]
290
291 package_data = dict(
292 datasource_id=cls.datasource_id,
293 type=cls.default_package_type,
294 dependencies=deps,
295 primary_language=cls.default_primary_language,
296 )
297 yield models.PackageData.from_data(package_data, package_only)

Callers

nothing calls this directly

Calls 6

GemfileLockParserClass · 0.90
to_stringMethod · 0.80
from_dataMethod · 0.80
get_urlsFunction · 0.70
valuesMethod · 0.45
joinMethod · 0.45

Tested by

no test coverage detected