Skip to content

Commit 5ed44af

Browse files
Do not fail in package/deps creation
Try and catch failures in top level packages and dependencies creation, and add them to resource level `scan_errors`, instead of crashing. Signed-off-by: Ayan Sinha Mahapatra <[email protected]>
1 parent 07ef1d5 commit 5ed44af

File tree

1 file changed

+38
-36
lines changed

1 file changed

+38
-36
lines changed

src/packagedcode/plugin_package.py

Lines changed: 38 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -158,47 +158,49 @@ def create_package_and_deps(codebase, **kwargs):
158158
for package_data in resource.package_data:
159159
try:
160160
package_data = PackageData.from_dict(package_data)
161-
except Exception as e:
162-
raise Exception(
163-
'create_package_and_deps: Failed to create PackageData:',
164-
package_data,
165-
) from e
166-
167-
if TRACE:
168-
logger_debug(' create_package_and_deps: package_data:', package_data)
169-
170-
# Find a handler for this package datasource to assemble collect
171-
# packages and deps
172-
handler = get_package_handler(package_data)
173-
if TRACE:
174-
logger_debug(' create_package_and_deps: handler:', handler)
175-
click.echo(f' create_package_and_deps: handler: {handler}')
176-
items = handler.assemble(
177-
package_data=package_data,
178-
resource=resource,
179-
codebase=codebase,
180-
)
181-
182-
for item in items:
161+
183162
if TRACE:
184-
logger_debug(' create_package_and_deps: item:', item)
163+
logger_debug(' create_package_and_deps: package_data:', package_data)
185164

186-
if isinstance(item, Package):
187-
packages_top_level.append(item)
165+
# Find a handler for this package datasource to assemble collect
166+
# packages and deps
167+
handler = get_package_handler(package_data)
168+
if TRACE:
169+
logger_debug(' create_package_and_deps: handler:', handler)
170+
click.echo(f' create_package_and_deps: handler: {handler}')
171+
172+
items = handler.assemble(
173+
package_data=package_data,
174+
resource=resource,
175+
codebase=codebase,
176+
)
177+
178+
for item in items:
179+
if TRACE:
180+
logger_debug(' create_package_and_deps: item:', item)
188181

189-
elif isinstance(item, Dependency):
190-
dependencies_top_level.append(item)
182+
if isinstance(item, Package):
183+
packages_top_level.append(item)
191184

192-
elif isinstance(item, Resource):
193-
seen_resource_ids.add(item.rid)
194-
if TRACE:
195-
logger_debug(
196-
' create_package_and_deps: seen_resource_ids:',
197-
seen_resource_ids,
198-
)
185+
elif isinstance(item, Dependency):
186+
dependencies_top_level.append(item)
187+
188+
elif isinstance(item, Resource):
189+
seen_resource_ids.add(item.rid)
190+
if TRACE:
191+
logger_debug(
192+
' create_package_and_deps: seen_resource_ids:',
193+
seen_resource_ids,
194+
)
195+
196+
else:
197+
raise Exception(f'Unknown package assembly item type: {item!r}')
198+
199+
except Exception as e:
200+
msg = f'create_package_and_deps: Failed to assemble PackageData: {package_data}: \n {e}'
201+
resource.scan_errors.append(msg)
202+
resource.save(codebase)
199203

200-
else:
201-
raise Exception(f'Unknown package assembly item type: {item!r}')
202204

203205
codebase.attributes.packages.extend(pkg.to_dict() for pkg in packages_top_level)
204206
codebase.attributes.dependencies.extend(dep.to_dict() for dep in dependencies_top_level)

0 commit comments

Comments
 (0)