|
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