@@ -320,27 +320,28 @@ def scan_for_application_packages(project):
320
320
resource_qs = project .codebaseresources .no_status ()
321
321
322
322
# Collect detected Package data and save it to the CodebaseResource it was
323
- # detected from.
323
+ # detected from
324
324
_scan_and_save (
325
325
resource_qs = resource_qs ,
326
326
scan_func = scan_for_package_data ,
327
327
save_func = save_scan_package_results ,
328
328
)
329
329
330
330
# Iterate through CodebaseResources with Package data and handle them using
331
- # the proper Package handler from packagedcode.
331
+ # the proper Package handler from packagedcode
332
332
assemble_packages (project = project )
333
333
334
334
335
335
def add_to_package (package_uid , resource , project ):
336
336
"""
337
- Relate a DiscoveredPackage to `resource` from `project` using `package_uid`.
337
+ Relate a DiscoveredPackage to `resource` from `project` using `package_uid`
338
338
"""
339
339
if not package_uid :
340
340
return
341
-
342
- resource_package = resource .discovered_packages .filter (package_uid = package_uid )
343
- if not resource_package .exists ():
341
+ package_associated_with_resource = resource .discovered_packages .filter (
342
+ package_uid = package_uid
343
+ ).exists ()
344
+ if not package_associated_with_resource :
344
345
package = project .discoveredpackages .get (package_uid = package_uid )
345
346
resource .discovered_packages .add (package )
346
347
@@ -350,20 +351,22 @@ def assemble_packages(project):
350
351
Create instances of DiscoveredPackage and DiscoveredDependency for `project`
351
352
from the parsed package data present in the CodebaseResources of `project`.
352
353
"""
353
- logger .info (f"Project { project } assemble_packages: " )
354
+ logger .info (f"Project: { project } : \n " "Function: assemble_packages \n " )
354
355
seen_resource_paths = set ()
355
-
356
356
for resource in project .codebaseresources .has_package_data ():
357
357
if resource .path in seen_resource_paths :
358
358
continue
359
359
360
- logger .info (f" Processing: { resource .path } " )
360
+ logger .info (f"Processing: CodebaseResource { resource .path } \n " )
361
+
361
362
for package_mapping in resource .package_data :
362
363
pd = packagedcode_models .PackageData .from_dict (mapping = package_mapping )
363
- logger .info (f" Package data: { pd .purl } " )
364
+
365
+ logger .info (f"Processing: PackageData { pd .purl } \n " )
364
366
365
367
handler = get_package_handler (pd )
366
- logger .info (f" Selected package handler: { handler .__name__ } " )
368
+
369
+ logger .info (f"Selected: Package handler { handler } \n " )
367
370
368
371
items = handler .assemble (
369
372
package_data = pd ,
@@ -372,19 +375,36 @@ def assemble_packages(project):
372
375
package_adder = add_to_package ,
373
376
)
374
377
378
+ dependencies = []
379
+ resources = []
375
380
for item in items :
376
- logger .info (f" Processing item: { item } " )
381
+ logger .info (f"Processing: item { item } \n " )
377
382
if isinstance (item , packagedcode_models .Package ):
383
+ # In order to relate CodebaseResources to
384
+ # DiscoveredPackages, we create DiscoveredPackages from
385
+ # yielded `Package`s first
378
386
package_data = item .to_dict ()
379
387
pipes .update_or_create_package (project , package_data )
380
388
elif isinstance (item , packagedcode_models .Dependency ):
381
389
# We will handle Dependencies when we properly implement the
382
390
# DiscoveredDependency model
383
391
pass
384
392
elif isinstance (item , CodebaseResource ):
385
- seen_resource_paths .add (item .path )
393
+ # We store CodebaseResources in `resources` so we can
394
+ # process them after we create all Packages assembled from
395
+ # `resource`
396
+ resources .append (item )
386
397
else :
387
- logger .info (f"Unknown Package assembly item type: { item !r} " )
398
+ logger .info (f"Unknown Package assembly item type: { item !r} \n " )
399
+
400
+ for item in resources + dependencies :
401
+ logger .info (f"Processing: item { item } \n " )
402
+ if isinstance (item , packagedcode_models .Dependency ):
403
+ # We will handle Dependencies when we properly implement the
404
+ # DiscoveredDependency model
405
+ pass
406
+ elif isinstance (item , CodebaseResource ):
407
+ seen_resource_paths .add (item .path )
388
408
389
409
390
410
def run_scancode (location , output_file , options , raise_on_error = False ):
0 commit comments