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

Function build_rubygem_package_data

src/packagedcode/rubygems.py:425–517  ·  view source on GitHub ↗

Return a PackageData for ``datasource_id`` built from a Gem `gem_data` mapping or None. The ``gem_data`` can come from a .gemspec or .gem/metadata. Optionally use the provided ``download_url`` and `package_url`` strings.

(gem_data, datasource_id, package_only=False)

Source from the content-addressed store, hash-verified

423
424
425def build_rubygem_package_data(gem_data, datasource_id, package_only=False):
426 """
427 Return a PackageData for ``datasource_id`` built from a Gem `gem_data`
428 mapping or None. The ``gem_data`` can come from a .gemspec or .gem/metadata.
429 Optionally use the provided ``download_url`` and `package_url`` strings.
430 """
431 if not gem_data:
432 return
433
434 metadata = gem_data.get('metadata') or {}
435
436 name = gem_data.get('name')
437 # there are two levels of nesting for version:
438 version1 = gem_data.get('version') or {}
439 version = version1.get('version') or None
440
441 platform = gem_data.get('platform')
442 if platform != 'ruby':
443 qualifiers = dict(platform=platform)
444 else:
445 qualifiers = {}
446
447 description = build_description(
448 summary=gem_data.get('summary'),
449 description=gem_data.get('description'),
450 )
451
452 # Since the gem spec doc is not clear wrt. to the default being OR or AND
453 # we will treat a list of licenses and a conjunction for now (e.g. AND)
454 # See https://guides.rubygems.org/specification-reference/#licenseo
455 lic = gem_data.get('license')
456 licenses = gem_data.get('licenses')
457 extracted_license_statement = licenses_mapper(lic, licenses)
458
459 # we may have tow homepages and one may be wrong.
460 # we prefer the one from the metadata
461 homepage_url = metadata.get('homepage_uri')
462 if not homepage_url:
463 homepage_url = gem_data.get('homepage')
464
465 urls = get_urls(name, version, platform)
466 dependencies = get_dependencies(gem_data.get('dependencies'))
467 file_references = get_file_references(metadata.get('files'))
468
469 package_mapping = dict(
470 datasource_id=datasource_id,
471 type=GemArchiveHandler.default_package_type,
472 primary_language=GemArchiveHandler.default_primary_language,
473 name=name,
474 version=version,
475 qualifiers=qualifiers,
476 description=description,
477 homepage_url=homepage_url,
478 extracted_license_statement=extracted_license_statement,
479 bug_tracking_url=metadata.get('bug_tracking_uri'),
480 code_view_url=metadata.get('source_code_uri'),
481 file_references=file_references,
482 dependencies=dependencies,

Callers 2

parseMethod · 0.85
parseMethod · 0.85

Calls 10

build_descriptionFunction · 0.90
rubygems_homepage_urlFunction · 0.85
from_dataMethod · 0.80
licenses_mapperFunction · 0.70
get_urlsFunction · 0.70
get_dependenciesFunction · 0.70
get_file_referencesFunction · 0.70
getMethod · 0.65
splitMethod · 0.45
appendMethod · 0.45

Tested by

no test coverage detected