Skip to content

Commit 210c91e

Browse files
committed
fix: prevent 'NoneType' error when scanning single Cargo.toml files
Signed-off-by: Om Santosh Suneri <[email protected]>
1 parent 930e30e commit 210c91e

File tree

1 file changed

+15
-7
lines changed

1 file changed

+15
-7
lines changed

src/packagedcode/cargo.py

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,13 @@ def assemble(cls, package_data, resource, codebase, package_adder):
6767
package_data.extra_data[attribute] = 'workspace'
6868
workspace_package_data[attribute] = getattr(package_data, attribute)
6969

70-
workspace_root_path = resource.parent(codebase).path
70+
workspace_root = resource.parent(codebase)
71+
if not workspace_root:
72+
# If there's no parent (e.g., scanning a single file), use the directory part of the resource path
73+
workspace_root_path = os.path.dirname(resource.path)
74+
else:
75+
workspace_root_path = workspace_root.path
76+
7177
if workspace_package_data and workspace_members:
7278

7379
# TODO: support glob patterns found in cargo workspaces
@@ -103,12 +109,14 @@ def assemble(cls, package_data, resource, codebase, package_adder):
103109
package_adder=package_adder,
104110
)
105111
else:
106-
yield from cls.assemble_from_many_datafiles(
107-
datafile_name_patterns=('Cargo.toml', 'cargo.toml', 'Cargo.lock', 'cargo.lock'),
108-
directory=resource.parent(codebase),
109-
codebase=codebase,
110-
package_adder=package_adder,
111-
)
112+
parent_resource = resource.parent(codebase)
113+
if parent_resource:
114+
yield from cls.assemble_from_many_datafiles(
115+
datafile_name_patterns=('Cargo.toml', 'cargo.toml', 'Cargo.lock', 'cargo.lock'),
116+
directory=parent_resource,
117+
codebase=codebase,
118+
package_adder=package_adder,
119+
)
112120

113121
@classmethod
114122
def update_resource_package_data(cls, workspace, workspace_package_data, resource_package_data, mapping=None):

0 commit comments

Comments
 (0)