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

Function build_package

src/packagedcode/chef.py:227–286  ·  view source on GitHub ↗

Return a PackageData object from a package_data mapping from a metadata.json or similar or None.

(package_data, datasource_id, package_only=False)

Source from the content-addressed store, hash-verified

225
226
227def build_package(package_data, datasource_id, package_only=False):
228 """
229 Return a PackageData object from a package_data mapping from a metadata.json
230 or similar or None.
231 """
232 name = package_data.get('name')
233 version = package_data.get('version')
234
235 maintainer_name = package_data.get('maintainer', '')
236 maintainer_email = package_data.get('maintainer_email', '')
237 parties = []
238 if maintainer_name or maintainer_email:
239 parties.append(
240 models.Party(
241 name=maintainer_name.strip() or None,
242 role='maintainer',
243 email=maintainer_email.strip() or None,
244 )
245 )
246
247 # TODO: combine descriptions as done elsewhere
248 description = package_data.get('description', '') or package_data.get('long_description', '')
249 lic = package_data.get('license', '')
250 extracted_license_statement = None
251 if lic:
252 extracted_license_statement = lic.strip()
253
254 code_view_url = package_data.get('source_url', '')
255 bug_tracking_url = package_data.get('issues_url', '')
256
257 deps = dict(package_data.get('dependencies', {}) or {})
258 deps.update(package_data.get('depends', {}) or {})
259
260 dependencies = []
261 for dependency_name, requirement in deps.items():
262 dependencies.append(
263 models.DependentPackage(
264 purl=PackageURL(type='chef', name=dependency_name).to_string(),
265 scope='dependencies',
266 extracted_requirement=requirement,
267 is_runtime=True,
268 is_optional=False,
269 )
270 )
271
272 package_data = dict(
273 datasource_id=datasource_id,
274 type=ChefMetadataJsonHandler.default_package_type,
275 name=name,
276 version=version,
277 parties=parties,
278 description=description.strip() or None,
279 extracted_license_statement=extracted_license_statement,
280 code_view_url=code_view_url.strip() or None,
281 bug_tracking_url=bug_tracking_url.strip() or None,
282 dependencies=dependencies,
283 primary_language='Ruby',
284 **get_urls(name, version),

Callers 2

parseMethod · 0.70
parseMethod · 0.70

Calls 6

to_stringMethod · 0.80
from_dataMethod · 0.80
get_urlsFunction · 0.70
getMethod · 0.65
appendMethod · 0.45
updateMethod · 0.45

Tested by

no test coverage detected