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

Method assemble

src/packagedcode/swift.py:52–169  ·  view source on GitHub ↗
(cls, package_data, resource, codebase, package_adder)

Source from the content-addressed store, hash-verified

50class BaseSwiftDatafileHandler(models.DatafileHandler):
51 @classmethod
52 def assemble(cls, package_data, resource, codebase, package_adder):
53 swift_manifest_resource = None
54 swift_show_dependencies_resource = None
55 swift_resolved_package_resource = None
56 processed_package = None
57 add_datafile_paths = []
58 add_datasource_ids = []
59 processed_dependencies = []
60
61 for r in resource.siblings(codebase):
62 if r.name in ("Package.swift.json", "Package.swift.deplock"):
63 swift_manifest_resource = r
64 elif r.name in ("Package.resolved", ".package.resolved"):
65 swift_resolved_package_resource = r
66 elif r.name == "swift-show-dependencies.deplock":
67 swift_show_dependencies_resource = r
68
69 # If only Package.resolved is available then yield all dependency as package.
70 if (
71 not swift_manifest_resource
72 and not swift_show_dependencies_resource
73 and resource.name in ("Package.resolved", ".package.resolved")
74 ):
75 processed_package = package_data
76 processed_dependencies = package_data.dependencies
77 # If no manifest but have dependency graph from `deplock` then use it construct top-level package.
78 elif (
79 not swift_manifest_resource
80 and resource.name == "swift-show-dependencies.deplock"
81 ):
82 processed_package = package_data
83 processed_dependencies = package_data.dependencies
84 # If manifest is available then use the manifest to construct top-level package.
85 elif swift_manifest_resource and resource.name in (
86 "Package.swift.json",
87 "Package.swift.deplock",
88 ):
89 processed_dependencies = package_data.dependencies
90 # Dependencies from `swift-show-dependencies.deplock` supersedes dependencies from other datafiles.
91 if swift_show_dependencies_resource:
92 swift_show_dependencies_package_data = models.PackageData.from_dict(
93 swift_show_dependencies_resource.package_data[0]
94 )
95 processed_dependencies = (
96 swift_show_dependencies_package_data.dependencies
97 )
98 # Use dependencies from `Package.resolved` when `swift-show-dependencies.deplock` is not present.
99 elif swift_resolved_package_resource:
100 swift_resolved_package_data = (
101 swift_resolved_package_resource.package_data
102 )
103
104 resolved_dependencies = []
105 for package in swift_resolved_package_data:
106 version = package.get("version")
107 name = package.get("name")
108
109 purl = PackageURL(

Callers

nothing calls this directly

Calls 11

siblingsMethod · 0.80
to_stringMethod · 0.80
from_package_dataMethod · 0.80
parentMethod · 0.80
getMethod · 0.65
removeMethod · 0.65
from_dictMethod · 0.45
appendMethod · 0.45

Tested by

no test coverage detected