@@ -188,9 +188,10 @@ def parse(cls, location, package_only=False):
188
188
location = dependency .get ("location" )
189
189
state = dependency .get ("state" , {})
190
190
version = None
191
+ namespace = None
191
192
192
193
if location and kind == "remoteSourceControl" :
193
- name = get_canonical_name (location )
194
+ namespace , name = get_namespace_and_name (location )
194
195
195
196
version = state .get ("version" )
196
197
@@ -201,7 +202,7 @@ def parse(cls, location, package_only=False):
201
202
datasource_id = cls .datasource_id ,
202
203
type = cls .default_package_type ,
203
204
primary_language = cls .default_primary_language ,
204
- namespace = None ,
205
+ namespace = namespace ,
205
206
name = name ,
206
207
version = version ,
207
208
)
@@ -238,13 +239,14 @@ def get_dependencies(dependencies):
238
239
continue
239
240
240
241
source = source [0 ]
242
+ namespace = None
241
243
name = source .get ("identity" )
242
244
version = None
243
245
is_resolved = False
244
246
245
247
location = source .get ("location" )
246
248
if remote := location .get ("remote" ):
247
- name = get_canonical_name (remote [0 ].get ("urlString" ))
249
+ namespace , name = get_namespace_and_name (remote [0 ].get ("urlString" ))
248
250
249
251
requirement = source .get ("requirement" )
250
252
if exact := requirement .get ("exact" ):
@@ -258,14 +260,15 @@ def get_dependencies(dependencies):
258
260
259
261
purl = PackageURL (
260
262
type = "swift" ,
263
+ namespace = namespace ,
261
264
name = name ,
262
265
version = version if is_resolved else None ,
263
266
)
264
267
265
268
dependent_packages .append (
266
269
models .DependentPackage (
267
270
purl = purl .to_string (),
268
- scope = "install " ,
271
+ scope = "dependencies " ,
269
272
is_runtime = True ,
270
273
is_optional = False ,
271
274
is_resolved = is_resolved ,
@@ -275,10 +278,11 @@ def get_dependencies(dependencies):
275
278
return dependent_packages
276
279
277
280
278
- def get_canonical_name (url ):
281
+ def get_namespace_and_name (url ):
279
282
parsed_url = parse .urlparse (url )
280
283
hostname = parsed_url .hostname
281
284
path = parsed_url .path .removesuffix (".git" )
285
+ canonical_name = hostname + path
282
286
283
- return parse . quote ( hostname + path , safe = "" )
287
+ return canonical_name . rsplit ( "/" , 1 )
284
288
0 commit comments