@@ -256,32 +256,56 @@ def parse(cls, location):
256
256
if not all_gems :
257
257
return
258
258
259
- main_gem = all_gems [0 ]
260
- deps = [
261
- models .DependentPackage (
262
- purl = PackageURL (
263
- type = 'gem' ,
264
- name = dep .name ,
265
- version = dep .version
266
- ).to_string (),
267
- extracted_requirement = ', ' .join (dep .requirements ),
268
- scope = 'dependencies' ,
269
- is_runtime = True ,
270
- is_optional = False ,
271
- is_resolved = True ,
272
- ) for dep in all_gems [1 :]
273
- ]
274
- urls = get_urls (main_gem .name , main_gem .version )
275
-
276
- yield models .PackageData (
277
- datasource_id = cls .datasource_id ,
278
- primary_language = cls .default_primary_language ,
279
- type = cls .default_package_type ,
280
- name = main_gem .name ,
281
- version = main_gem .version ,
282
- dependencies = deps ,
283
- ** urls
284
- )
259
+ primary_gem = gemfile_lock .primary_gem
260
+ if primary_gem :
261
+ deps = [
262
+ models .DependentPackage (
263
+ purl = PackageURL (
264
+ type = 'gem' ,
265
+ name = dep .name ,
266
+ version = dep .version
267
+ ).to_string (),
268
+ extracted_requirement = ', ' .join (dep .requirements ),
269
+ scope = 'dependencies' ,
270
+ is_runtime = True ,
271
+ is_optional = False ,
272
+ is_resolved = True ,
273
+ ) for dep in all_gems [1 :]
274
+ ]
275
+ urls = get_urls (primary_gem .name , primary_gem .version )
276
+
277
+ yield models .PackageData (
278
+ datasource_id = cls .datasource_id ,
279
+ primary_language = cls .default_primary_language ,
280
+ type = cls .default_package_type ,
281
+ name = primary_gem .name ,
282
+ version = primary_gem .version ,
283
+ dependencies = deps ,
284
+ ** urls
285
+ )
286
+ else :
287
+ deps = [
288
+ models .DependentPackage (
289
+ purl = PackageURL (
290
+ type = 'gem' ,
291
+ name = gem .name ,
292
+ version = gem .version
293
+ ).to_string (),
294
+ extracted_requirement = ', ' .join (gem .requirements ),
295
+ # FIXME: get proper scope... This does not seem right
296
+ scope = 'dependencies' ,
297
+ is_runtime = True ,
298
+ is_optional = False ,
299
+ is_resolved = True ,
300
+ ) for gem in all_gems
301
+ ]
302
+
303
+ yield models .PackageData (
304
+ datasource_id = cls .datasource_id ,
305
+ type = cls .default_package_type ,
306
+ dependencies = deps ,
307
+ primary_language = cls .default_primary_language ,
308
+ )
285
309
286
310
287
311
class GemfileLockInExtractedGemHandler (GemfileLockHandler ):
0 commit comments