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

Method parse

src/packagedcode/cocoapods.py:388–439  ·  view source on GitHub ↗

Yield PackageData from a YAML Podfile.lock.

(cls, location, package_only=False)

Source from the content-addressed store, hash-verified

386
387 @classmethod
388 def parse(cls, location, package_only=False):
389 """
390 Yield PackageData from a YAML Podfile.lock.
391 """
392 with open(location) as pfl:
393 data = saneyaml.load(pfl)
394
395 dependency_data = PodfileLockDataByPurl.collect_dependencies_data_by_purl(
396 data=data,
397 package_type=cls.default_package_type,
398 )
399
400 dependencies = []
401
402 pods = data.get('PODS') or []
403 for pod in pods:
404 # dependencies with mappings have direct dependencies
405 if isinstance(pod, dict):
406 for main_pod, dep_pods in pod.items():
407 dependencies_for_resolved = cls.get_dependencies_for_resolved_package(
408 dependency_data=dependency_data,
409 dep_pods=dep_pods,
410 )
411 dependency = cls.get_pods_dependency_with_resolved_package(
412 dependency_data=dependency_data,
413 main_pod=main_pod,
414 dependencies_for_resolved=dependencies_for_resolved,
415 )
416 dependencies.append(dependency)
417
418 # These packages have no direct dependencies
419 elif isinstance(pod, str):
420 dependency = cls.get_pods_dependency_with_resolved_package(
421 dependency_data, pod,
422 )
423 dependencies.append(dependency)
424
425 podfile_checksum = data.get('PODFILE CHECKSUM')
426 cocoapods_version = data.get('COCOAPODS')
427 extra_data = {
428 'cocoapods': cocoapods_version,
429 'podfile_checksum': podfile_checksum,
430 }
431
432 package_data = dict(
433 datasource_id=cls.datasource_id,
434 type=cls.default_package_type,
435 primary_language=cls.default_primary_language,
436 dependencies=dependencies,
437 extra_data=extra_data,
438 )
439 yield models.PackageData.from_data(package_data, package_only)
440
441
442class PodfileLockDataByPurl:

Callers

nothing calls this directly

Calls 7

from_dataMethod · 0.80
getMethod · 0.65
loadMethod · 0.45
appendMethod · 0.45

Tested by

no test coverage detected