Skip to content

Commit 5ccee5f

Browse files
committed
Return single Package from Gemfile.lock #3072
Signed-off-by: Jono Yang <jyang@nexb.com>
1 parent c15414b commit 5ccee5f

File tree

1 file changed

+31
-29
lines changed

1 file changed

+31
-29
lines changed

src/packagedcode/rubygems.py

Lines changed: 31 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,8 @@ class GemfileLockHandler(BaseGemProjectHandler):
253253
def parse(cls, location):
254254
gemfile_lock = GemfileLockParser(location)
255255
dependencies = []
256-
for _, gem in gemfile_lock.all_gems.items():
256+
all_gems = list(gemfile_lock.all_gems.values())
257+
for gem in all_gems:
257258
dependencies.append(
258259
models.DependentPackage(
259260
purl=PackageURL(
@@ -277,34 +278,35 @@ def parse(cls, location):
277278
primary_language=cls.default_primary_language,
278279
)
279280

280-
for _, gem in gemfile_lock.all_gems.items():
281-
deps = []
282-
for _dep_name, dep in gem.dependencies.items():
283-
deps.append(
284-
models.DependentPackage(
285-
purl=PackageURL(
286-
type='gem',
287-
name=dep.name,
288-
version=dep.version
289-
).to_string(),
290-
extracted_requirement=', '.join(dep.requirements),
291-
scope='dependencies',
292-
is_runtime=True,
293-
is_optional=False,
294-
is_resolved=True,
295-
)
296-
)
297-
urls = get_urls(gem.name, gem.version)
298-
299-
yield models.PackageData(
300-
datasource_id=cls.datasource_id,
301-
primary_language=cls.default_primary_language,
302-
type=cls.default_package_type,
303-
name=gem.name,
304-
version=gem.version,
305-
dependencies=deps,
306-
**urls
307-
)
281+
if not all_gems:
282+
return
283+
284+
main_gem = all_gems[0]
285+
deps = [
286+
models.DependentPackage(
287+
purl=PackageURL(
288+
type='gem',
289+
name=dep.name,
290+
version=dep.version
291+
).to_string(),
292+
extracted_requirement=', '.join(dep.requirements),
293+
scope='dependencies',
294+
is_runtime=True,
295+
is_optional=False,
296+
is_resolved=True,
297+
) for dep in main_gem.dependencies.values()
298+
]
299+
urls = get_urls(main_gem.name, main_gem.version)
300+
301+
yield models.PackageData(
302+
datasource_id=cls.datasource_id,
303+
primary_language=cls.default_primary_language,
304+
type=cls.default_package_type,
305+
name=main_gem.name,
306+
version=main_gem.version,
307+
dependencies=deps,
308+
**urls
309+
)
308310

309311

310312
class GemfileLockInExtractedGemHandler(GemfileLockHandler):

0 commit comments

Comments
 (0)