|
13 | 13 | from collections import defaultdict |
14 | 14 |
|
15 | 15 | from commoncode import fileutils |
| 16 | +from packageurl import PackageURL |
16 | 17 |
|
17 | 18 | from licensedcode.cache import build_spdx_license_expression |
18 | 19 | from licensedcode.cache import get_cache |
@@ -374,52 +375,27 @@ def parse(cls, location, package_only=True): |
374 | 375 | ) |
375 | 376 | ) |
376 | 377 |
|
377 | | - if ( |
378 | | - 'upstream_type' in metadata_fields |
379 | | - and 'name' in metadata_fields |
380 | | - and 'version' in metadata_fields |
381 | | - and 'licenses' in metadata_fields |
382 | | - and 'upstream_address' in metadata_fields |
383 | | - ): |
384 | | - # TODO: Create function that determines package type from download URL, |
385 | | - # then create a package of that package type from the metadata info |
386 | | - package_data = dict( |
387 | | - datasource_id=cls.datasource_id, |
388 | | - type=metadata_fields.get('upstream_type', cls.default_package_type), |
389 | | - name=metadata_fields.get('name'), |
390 | | - version=metadata_fields.get('version'), |
391 | | - extracted_license_statement=metadata_fields.get('licenses', []), |
392 | | - parties=parties, |
393 | | - homepage_url=metadata_fields.get('upstream_address', ''), |
394 | | - # TODO: Store 'upstream_hash` somewhere |
395 | | - ) |
396 | | - yield models.PackageData.from_data(package_data, package_only=True) |
397 | | - |
398 | | - if ( |
399 | | - 'package_type' in metadata_fields |
400 | | - and 'name' in metadata_fields |
401 | | - and 'version' in metadata_fields |
402 | | - and 'license_expression' in metadata_fields |
403 | | - and 'homepage_url' in metadata_fields |
404 | | - and 'download_url' in metadata_fields |
405 | | - and 'vcs_url' in metadata_fields |
406 | | - and 'download_archive_sha1' in metadata_fields |
407 | | - and 'vcs_commit_hash' in metadata_fields |
408 | | - ): |
409 | | - package_data = dict( |
410 | | - datasource_id=cls.datasource_id, |
411 | | - type=metadata_fields.get('package_type', cls.default_package_type), |
412 | | - name=metadata_fields.get('name'), |
413 | | - version=metadata_fields.get('version'), |
414 | | - extracted_license_statement=metadata_fields.get('license_expression', ''), |
415 | | - parties=parties, |
416 | | - homepage_url=metadata_fields.get('homepage_url', ''), |
417 | | - download_url=metadata_fields.get('download_url', ''), |
418 | | - vcs_url=metadata_fields.get('vcs_url', ''), |
419 | | - sha1=metadata_fields.get('download_archive_sha1', ''), |
420 | | - extra_data=dict(vcs_commit_hash=metadata_fields.get('vcs_commit_hash', '')) |
421 | | - ) |
422 | | - yield models.PackageData.from_data(package_data, package_only=True) |
| 378 | + # TODO: Create function that determines package type from download URL, |
| 379 | + # then create a package of that package type from the metadata info |
| 380 | + package_data = dict( |
| 381 | + datasource_id=cls.datasource_id, |
| 382 | + type=metadata_fields.get('upstream_type', metadata_fields.get('package_type', cls.default_package_type)), |
| 383 | + name=metadata_fields.get('name'), |
| 384 | + version=metadata_fields.get('version'), |
| 385 | + extracted_license_statement=metadata_fields.get('licenses', metadata_fields.get('license_expression')), |
| 386 | + parties=parties, |
| 387 | + homepage_url=metadata_fields.get('upstream_address', metadata_fields.get('homepage_url')), |
| 388 | + download_url=metadata_fields.get('download_url'), |
| 389 | + vcs_url=metadata_fields.get('vcs_url'), |
| 390 | + sha1=metadata_fields.get('download_archive_sha1'), |
| 391 | + # TODO: Store 'upstream_hash` somewhere |
| 392 | + ) |
| 393 | + if 'vcs_commit_hash' in metadata_fields: |
| 394 | + package_data["extra_data"] = dict(vcs_commit_hash=metadata_fields['vcs_commit_hash']) |
| 395 | + if 'package_url' in metadata_fields: |
| 396 | + package_data.update(PackageURL.from_string(metadata_fields['package_url']).to_dict()) |
| 397 | + yield models.PackageData.from_data(package_data, package_only=True) |
| 398 | + |
423 | 399 |
|
424 | 400 | @classmethod |
425 | 401 | def assign_package_to_resources(cls, package, resource, codebase, package_adder): |
|
0 commit comments