Skip to content

Commit aa74702

Browse files
committed
Support spdx
Signed-off-by: jiyeong.seok <[email protected]>
1 parent d7986e5 commit aa74702

File tree

6 files changed

+44
-17
lines changed

6 files changed

+44
-17
lines changed

requirements.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
pyparsing
2-
scancode-toolkit>=32.0.2,==32.0.*
2+
scancode-toolkit>=32.2.0
33
scanoss
44
XlsxWriter
5-
fosslight_util>=2.0.0
5+
fosslight_util>=2.1.0
66
PyYAML
77
wheel>=0.38.1
88
intbitset

src/fosslight_source/_parsing_scanoss_file.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ def parsing_scanResult(scanoss_report: dict, path_to_scan: str = "", path_to_exc
4545
if any(os.path.commonpath([abs_file_path, exclude_path]) == exclude_path for exclude_path in abs_path_to_exclude):
4646
continue
4747
result_item = SourceItem(file_path)
48+
4849
if 'id' in findings[0]:
4950
if "none" == findings[0]['id']:
5051
continue

src/fosslight_source/_scan_item.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import logging
88
import re
99
import fosslight_util.constant as constant
10-
from fosslight_util.oss_item import FileItem, OssItem
10+
from fosslight_util.oss_item import FileItem, OssItem, get_checksum_sha1
1111

1212
logger = logging.getLogger(constant.LOGGER_NAME)
1313
replace_word = ["-only", "-old-style", "-or-later", "licenseref-scancode-", "licenseref-"]
@@ -41,6 +41,8 @@ def __init__(self, value: str) -> None:
4141
self._licenses = []
4242
self.oss_name = ""
4343
self.oss_version = ""
44+
45+
self.checksum = get_checksum_sha1(value)
4446

4547
def __del__(self) -> None:
4648
pass

src/fosslight_source/cli.py

Lines changed: 34 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
import sys
77
import os
8+
import platform
89
import warnings
910
import logging
1011
from datetime import datetime
@@ -13,7 +14,7 @@
1314
from fosslight_util.timer_thread import TimerThread
1415
from ._help import print_version, print_help_msg_source_scanner
1516
from ._license_matched import get_license_list_to_print
16-
from fosslight_util.output_format import check_output_formats, write_output_file
17+
from fosslight_util.output_format import check_output_formats_v2, write_output_file
1718
from fosslight_util.correct import correct_with_yaml
1819
from .run_scancode import run_scan
1920
from .run_scanoss import run_scanoss_py
@@ -49,7 +50,7 @@ def main() -> None:
4950
write_json_file = False
5051
output_file_name = ""
5152
print_matched_text = False
52-
formats = ""
53+
formats = []
5354
selected_scanner = ""
5455
correct_mode = True
5556

@@ -145,7 +146,8 @@ def create_report_file(
145146
selected_scanner: str, need_license: bool = False,
146147
output_path: str = "", output_files: list = [],
147148
output_extensions: list = [], correct_mode: bool = True,
148-
correct_filepath: str = "", path_to_scan: str = "", path_to_exclude: list = []
149+
correct_filepath: str = "", path_to_scan: str = "", path_to_exclude: list = [],
150+
formats: list = []
149151
) -> 'ScannerItem':
150152
"""
151153
Create report files for given scanned result.
@@ -168,12 +170,33 @@ def create_report_file(
168170
# If -o does not contains file name, set default name
169171
while len(output_files) < len(output_extensions):
170172
output_files.append(None)
173+
to_remove = [] # elements of spdx format on windows that should be removed
171174
for i, output_extension in enumerate(output_extensions):
172175
if output_files[i] is None or output_files[i] == "":
173-
if output_extension == _json_ext:
174-
output_files[i] = f"fosslight_opossum_src_{_start_time}"
176+
if formats:
177+
if formats[i].startswith('spdx'):
178+
if platform.system() != 'Windows':
179+
output_files[i] = f"fosslight_spdx_src_{_start_time}"
180+
else:
181+
logger.warning('spdx format is not supported on Windows. Please remove spdx from format.')
182+
to_remove.append(i)
183+
else:
184+
if output_extension == _json_ext:
185+
output_files[i] = f"fosslight_opossum_src_{_start_time}"
186+
else:
187+
output_files[i] = f"fosslight_report_src_{_start_time}"
175188
else:
176-
output_files[i] = f"fosslight_report_src_{_start_time}"
189+
if output_extension == _json_ext:
190+
output_files[i] = f"fosslight_opossum_src_{_start_time}"
191+
else:
192+
output_files[i] = f"fosslight_report_src_{_start_time}"
193+
for index in sorted(to_remove, reverse=True):
194+
# remove elements of spdx format on windows
195+
del output_files[index]
196+
del output_extensions[index]
197+
del formats[index]
198+
if len(output_extensions) < 1:
199+
sys.exit(0)
177200

178201
if not correct_filepath:
179202
correct_filepath = path_to_scan
@@ -219,10 +242,10 @@ def create_report_file(
219242

220243
combined_paths_and_files = [os.path.join(output_path, file) for file in output_files]
221244
results = []
222-
for combined_path_and_file, output_extension in zip(combined_paths_and_files, output_extensions):
245+
for combined_path_and_file, output_extension, output_format in zip(combined_paths_and_files, output_extensions, formats):
223246
# if need_license and output_extension == _json_ext and "scanoss_reference" in sheet_list:
224247
# del sheet_list["scanoss_reference"]
225-
results.append(write_output_file(combined_path_and_file, output_extension, scan_item, extended_header, ""))
248+
results.append(write_output_file(combined_path_and_file, output_extension, scan_item, extended_header, "", output_format))
226249
for success, msg, result_file in results:
227250
if success:
228251
logger.info(f"Output file: {result_file}")
@@ -295,8 +318,9 @@ def run_scanners(
295318
license_list = []
296319
spdx_downloads = {}
297320
result_log = {}
321+
scan_item = []
298322

299-
success, msg, output_path, output_files, output_extensions = check_output_formats(output_file_name, formats)
323+
success, msg, output_path, output_files, output_extensions, formats = check_output_formats_v2(output_file_name, formats)
300324

301325
logger, result_log = init_log(os.path.join(output_path, f"fosslight_log_src_{start_time}.txt"),
302326
True, logging.INFO, logging.DEBUG, PKG_NAME, path_to_scan, path_to_exclude)
@@ -319,7 +343,7 @@ def run_scanners(
319343
merged_result = merge_results(scancode_result, scanoss_result, spdx_downloads)
320344
scan_item = create_report_file(start_time, merged_result, license_list, scanoss_result, selected_scanner,
321345
print_matched_text, output_path, output_files, output_extensions, correct_mode,
322-
correct_filepath, path_to_scan, path_to_exclude)
346+
correct_filepath, path_to_scan, path_to_exclude, formats)
323347
else:
324348
print_help_msg_source_scanner()
325349
result_log[RESULT_KEY] = "Unsupported scanner"

src/fosslight_source/run_scancode.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
from fosslight_util.set_log import init_log
1515
from ._parsing_scancode_file_item import parsing_file_item
1616
from ._parsing_scancode_file_item import get_error_from_header
17-
from fosslight_util.output_format import check_output_formats
17+
from fosslight_util.output_format import check_output_formats_v2
1818
from fosslight_binary.binary_analysis import check_binary
1919
from typing import Tuple
2020

@@ -46,7 +46,7 @@ def run_scan(
4646
if not correct_filepath:
4747
correct_filepath = path_to_scan
4848

49-
success, msg, output_path, output_files, output_extensions = check_output_formats(output_file_name, formats)
49+
success, msg, output_path, output_files, output_extensions, formats = check_output_formats_v2(output_file_name, formats)
5050
if success:
5151
if output_path == "": # if json output with _write_json_file not used, output_path won't be needed.
5252
output_path = os.getcwd()

src/fosslight_source/run_scanoss.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
from datetime import datetime
1212
import fosslight_util.constant as constant
1313
from fosslight_util.set_log import init_log
14-
from fosslight_util.output_format import check_output_formats # , write_output_file
14+
from fosslight_util.output_format import check_output_formats_v2 # , write_output_file
1515
from ._parsing_scanoss_file import parsing_scanResult # scanoss
1616
from ._parsing_scanoss_file import parsing_extraInfo # scanoss
1717
import shutil
@@ -41,7 +41,7 @@ def run_scanoss_py(path_to_scan: str, output_file_name: str = "", format: str =
4141
:param write_json_file: if requested, keep the raw files.
4242
:return scanoss_file_list: list of ScanItem (scanned result by files).
4343
"""
44-
success, msg, output_path, output_files, output_extensions = check_output_formats(output_file_name, format)
44+
success, msg, output_path, output_files, output_extensions, formats = check_output_formats_v2(output_file_name, format)
4545

4646
if not called_by_cli:
4747
global logger

0 commit comments

Comments
 (0)