@@ -66,19 +66,14 @@ def assemble(cls, package_data, resource, codebase, package_adder):
6666 for attribute in attributes_to_copy :
6767 package_data .extra_data [attribute ] = 'workspace'
6868 workspace_package_data [attribute ] = getattr (package_data , attribute )
69+
70+ datafile_path_patterns = CargoTomlHandler .path_patterns + CargoLockHandler .path_patterns
6971
7072 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-
77- if workspace_package_data and workspace_members :
78-
73+ if workspace_root and workspace_package_data and workspace_members :
7974 # TODO: support glob patterns found in cargo workspaces
8075 for workspace_member_path in workspace_members :
81- workspace_directory_path = os .path .join (workspace_root_path , workspace_member_path )
76+ workspace_directory_path = os .path .join (workspace_root . path , workspace_member_path )
8277 workspace_directory = codebase .get_resource (path = workspace_directory_path )
8378 if not workspace_directory :
8479 continue
@@ -103,20 +98,18 @@ def assemble(cls, package_data, resource, codebase, package_adder):
10398 resource .save (codebase )
10499
105100 yield from cls .assemble_from_many_datafiles (
106- datafile_name_patterns = ( 'Cargo.toml' , 'cargo.toml' , 'Cargo.lock' , 'cargo.lock' ) ,
107- directory = workspace_directory ,
101+ datafile_path_patterns = datafile_path_patterns ,
102+ resource = workspace_directory ,
108103 codebase = codebase ,
109104 package_adder = package_adder ,
110105 )
111106 else :
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- )
107+ yield from cls .assemble_from_many_datafiles (
108+ datafile_path_patterns = datafile_path_patterns ,
109+ resource = workspace_root ,
110+ codebase = codebase ,
111+ package_adder = package_adder ,
112+ )
120113
121114 @classmethod
122115 def update_resource_package_data (cls , workspace , workspace_package_data , resource_package_data , mapping = None ):
0 commit comments