|
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,54 +375,51 @@ def parse(cls, location, package_only=True):
|
374 | 375 | )
|
375 | 376 | )
|
376 | 377 |
|
377 |
| - if ( |
378 |
| - 'upstream_type' |
379 |
| - and 'name' |
380 |
| - and 'version' |
381 |
| - and 'licenses' |
382 |
| - and 'upstream_address' |
383 |
| - in metadata_fields |
384 |
| - ): |
385 |
| - # TODO: Create function that determines package type from download URL, |
386 |
| - # then create a package of that package type from the metadata info |
387 |
| - package_data = dict( |
388 |
| - datasource_id=cls.datasource_id, |
389 |
| - type=metadata_fields.get('upstream_type', cls.default_package_type), |
390 |
| - name=metadata_fields.get('name'), |
391 |
| - version=metadata_fields.get('version'), |
392 |
| - extracted_license_statement=metadata_fields.get('licenses', []), |
393 |
| - parties=parties, |
394 |
| - homepage_url=metadata_fields.get('upstream_address', ''), |
395 |
| - # TODO: Store 'upstream_hash` somewhere |
396 |
| - ) |
397 |
| - yield models.PackageData.from_data(package_data, package_only=True) |
398 |
| - |
399 |
| - if ( |
400 |
| - 'package_type' |
401 |
| - and 'name' |
402 |
| - and 'version' |
403 |
| - and 'license_expression' |
404 |
| - and 'homepage_url' |
405 |
| - and 'download_url' |
406 |
| - and 'vcs_url' |
407 |
| - and 'download_archive_sha1' |
408 |
| - and 'vcs_commit_hash' |
409 |
| - in metadata_fields |
410 |
| - ): |
411 |
| - package_data = dict( |
412 |
| - datasource_id=cls.datasource_id, |
413 |
| - type=metadata_fields.get('package_type', cls.default_package_type), |
414 |
| - name=metadata_fields.get('name'), |
415 |
| - version=metadata_fields.get('version'), |
416 |
| - extracted_license_statement=metadata_fields.get('license_expression', ''), |
417 |
| - parties=parties, |
418 |
| - homepage_url=metadata_fields.get('homepage_url', ''), |
419 |
| - download_url=metadata_fields.get('download_url', ''), |
420 |
| - vcs_url=metadata_fields.get('vcs_url', ''), |
421 |
| - sha1=metadata_fields.get('download_archive_sha1', ''), |
422 |
| - extra_data=dict(vcs_commit_hash=metadata_fields.get('vcs_commit_hash', '')) |
423 |
| - ) |
424 |
| - 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 | + |
| 381 | + if 'upstream_type' in metadata_fields: |
| 382 | + package_type = metadata_fields['upstream_type'] |
| 383 | + elif 'package_type' in metadata_fields: |
| 384 | + package_type = metadata_fields['package_type'] |
| 385 | + else: |
| 386 | + package_type = cls.default_package_type |
| 387 | + |
| 388 | + if 'licenses' in metadata_fields: |
| 389 | + extracted_license_statement = metadata_fields['licenses'] |
| 390 | + else: |
| 391 | + extracted_license_statement = metadata_fields.get('license_expression') |
| 392 | + |
| 393 | + if 'upstream_address' in metadata_fields: |
| 394 | + homepage_url = metadata_fields['upstream_address'] |
| 395 | + else: |
| 396 | + homepage_url = metadata_fields.get('homepage_url') |
| 397 | + |
| 398 | + |
| 399 | + extra_data = {} |
| 400 | + if 'vcs_commit_hash' in metadata_fields: |
| 401 | + extra_data['vcs_commit_hash'] = metadata_fields['vcs_commit_hash'] |
| 402 | + if 'upstream_hash' in metadata_fields: |
| 403 | + extra_data['upstream_hash'] = metadata_fields['upstream_hash'] |
| 404 | + |
| 405 | + package_data = dict( |
| 406 | + datasource_id=cls.datasource_id, |
| 407 | + type=package_type, |
| 408 | + name=metadata_fields.get('name'), |
| 409 | + version=metadata_fields.get('version'), |
| 410 | + extracted_license_statement=extracted_license_statement, |
| 411 | + parties=parties, |
| 412 | + homepage_url=homepage_url, |
| 413 | + download_url=metadata_fields.get('download_url'), |
| 414 | + vcs_url=metadata_fields.get('vcs_url'), |
| 415 | + sha1=metadata_fields.get('download_archive_sha1'), |
| 416 | + extra_data=extra_data |
| 417 | + ) |
| 418 | + if 'package_url' in metadata_fields: |
| 419 | + package_data.update(PackageURL.from_string(metadata_fields['package_url']).to_dict()) |
| 420 | + |
| 421 | + yield models.PackageData.from_data(package_data, package_only=True) |
| 422 | + |
425 | 423 |
|
426 | 424 | @classmethod
|
427 | 425 | def assign_package_to_resources(cls, package, resource, codebase, package_adder):
|
|
0 commit comments