Skip to content

Commit 881149f

Browse files
committed
feat: getdependencies javascript has an improved source code detection
1 parent 1d44964 commit 881149f

File tree

3 files changed

+21
-11
lines changed

3 files changed

+21
-11
lines changed

ChangeLog.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
`qualifier-match` (consider PackageURL qualifiers). See `Readme_Mapping.md`.
1313
* fix: `bom show` now properly shows components without versions.
1414
* fix: `bom show` and `bom validate` read SBOMs in UTF-8 encoding.
15+
* `getdependencies javascript` has an improved source code detection.
1516

1617
## 2.9.1
1718

capycli/dependencies/javascript.py

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# -------------------------------------------------------------------------------
2-
# Copyright (c) 2019-2024 Siemens
2+
# Copyright (c) 2019-2025 Siemens
33
# All Rights Reserved.
44
55
#
@@ -214,11 +214,13 @@ def try_find_component_metadata(self, bomitem: Component, package_source: str) -
214214
version)
215215
return bomitem
216216

217-
val = info.get("homepage", "")
218-
if val:
217+
homepage: str = info.get("homepage", "")
218+
if homepage:
219+
if homepage.endswith("#readme"):
220+
homepage = homepage[:-7]
219221
ext_ref = ExternalReference(
220222
type=ExternalReferenceType.WEBSITE,
221-
url=XsUri(val))
223+
url=XsUri(homepage))
222224
bomitem.external_references.add(ext_ref)
223225

224226
repository = info.get("repository")
@@ -238,11 +240,18 @@ def try_find_component_metadata(self, bomitem: Component, package_source: str) -
238240
if not str(url).startswith("http"):
239241
url = "https://" + url
240242
url = self.find_source_file(url, bomitem.name, version)
241-
CycloneDxSupport.update_or_set_ext_ref(
242-
bomitem,
243-
ExternalReferenceType.DISTRIBUTION,
244-
CaPyCliBom.SOURCE_URL_COMMENT,
245-
url)
243+
if url:
244+
CycloneDxSupport.update_or_set_ext_ref(
245+
bomitem,
246+
ExternalReferenceType.DISTRIBUTION,
247+
CaPyCliBom.SOURCE_URL_COMMENT,
248+
url)
249+
else:
250+
print_yellow(
251+
" No source archive found for component " +
252+
bomitem.name +
253+
", " +
254+
version)
246255
bomitem.description = info.get("description", "")
247256
if not CycloneDxSupport.get_binary_file_hash(bomitem):
248257
ext_ref2 = CycloneDxSupport.get_ext_ref(

tests/test_get_dependencies_javascript.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# -------------------------------------------------------------------------------
2-
# Copyright (c) 2022-2024 Siemens
2+
# Copyright (c) 2022-2025 Siemens
33
# All Rights Reserved.
44
55
#
@@ -179,7 +179,7 @@ def test_try_find_metadata_simple(self) -> None:
179179
self.assertEqual("zone.js", enhanced.components[0].name)
180180
self.assertEqual("Zones for JavaScript", enhanced.components[0].description)
181181
val = str(CycloneDxSupport.get_ext_ref_source_url(sbom.components[0]))
182-
self.assertEqual("", val)
182+
self.assertEqual("github.com/angular/angular.git", val)
183183

184184
self.delete_file("test_package_lock_1.json")
185185

0 commit comments

Comments
 (0)