Skip to content

Commit 71c89f2

Browse files
committed
[SP-2874] fix: component load_purls error
1 parent 96f839e commit 71c89f2

File tree

2 files changed

+15
-21
lines changed

2 files changed

+15
-21
lines changed

CLIENT_HELP.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -340,9 +340,9 @@ scanoss-py comp prov -p "pkg:github/unoconv/unoconv" --origin
340340
#### Component Licenses
341341
The following command provides the capability to search the SCANOSS KB for licenses for Open Source components:
342342
```bash
343-
scanoss-py comp licenses -p "pkg:github/jquery/jquery" -p "pkg:npm/express"
343+
scanoss-py comp licenses -p "pkg:github/jquery/jquery"
344344
```
345-
It is possible to supply multiple PURLs by repeating the `-p pkg` option, or providing a purl input file `-i purl-input.json` ([for example](tests/data/purl-input.json)):
345+
It is possible to supply multiple PURLs by providing a purl input file `-i purl-input.json` ([for example](tests/data/purl-input.json)):
346346
```bash
347347
scanoss-py comp licenses -i purl-input.json -o component-licenses.json
348348
```

src/scanoss/components.py

Lines changed: 13 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -95,24 +95,12 @@ def __init__( # noqa: PLR0913, PLR0915
9595
)
9696
self.cdx = CycloneDx(debug=self.debug)
9797

98-
def load_comps(self, json_file: Optional[str] = None, purls: Optional[List[str]] = None)-> Optional[dict]:
99-
"""
100-
Load the specified components and return a dictionary
101-
102-
:param json_file: JSON Components file (optional)
103-
:param purls: list pf PURLs (optional)
104-
:return: Components Request dictionary or None
105-
"""
106-
return self.load_purls(json_file, purls, 'components')
107-
108-
def load_purls(self, json_file: Optional[str] = None, purls: Optional[List[str]] = None, field:str = 'purls'
109-
) -> Optional[dict]:
98+
def load_purls(self, json_file: Optional[str] = None, purls: Optional[List[str]] = None) -> Optional[dict]:
11099
"""
111100
Load the specified purls and return a dictionary
112101
113102
:param json_file: JSON PURL file (optional)
114103
:param purls: list of PURLs (optional)
115-
:param field: Name of the dictionary field to store the purls in (default: 'purls')
116104
:return: PURL Request dictionary or None
117105
"""
118106
if json_file:
@@ -132,14 +120,14 @@ def load_purls(self, json_file: Optional[str] = None, purls: Optional[List[str]]
132120
parsed_purls = []
133121
for p in purls:
134122
parsed_purls.append({'purl': p})
135-
purl_request = {field: parsed_purls}
123+
purl_request = {'purls': parsed_purls}
136124
else:
137125
self.print_stderr('ERROR: No purls specified to process.')
138126
return None
139-
purl_count = len(purl_request.get(field, []))
140-
self.print_debug(f'Parsed {field} ({purl_count}): {purl_request}')
127+
purl_count = len(purl_request.get('purls', []))
128+
self.print_debug(f'Parsed purls ({purl_count}): {purl_request}')
141129
if purl_count == 0:
142-
self.print_stderr(f'ERROR: No {field} parsed from request.')
130+
self.print_stderr('ERROR: No purls parsed from request.')
143131
return None
144132
return purl_request
145133

@@ -225,9 +213,15 @@ def get_vulnerabilities(self, json_file: str = None, purls: [] = None, output_fi
225213
:return: True on success, False otherwise
226214
"""
227215
success = False
228-
purls_request = self.load_comps(json_file, purls)
229-
if purls_request is None or len(purls_request) == 0:
216+
purls_request = self.load_purls(json_file, purls)
217+
218+
if purls_request.get('purls') is None or len(purls_request.get('purls')) == 0:
230219
return False
220+
221+
# Workaround for new gRPC API
222+
purls_request['components'] = purls_request['purls']
223+
del purls_request['purls']
224+
231225
file = self._open_file_or_sdtout(output_file)
232226
if file is None:
233227
return False

0 commit comments

Comments
 (0)