Skip to content

Commit 0b3f89f

Browse files
committed
Generate ui mode result file
Signed-off-by: Jiyeong Seok <[email protected]>
1 parent 60d8db5 commit 0b3f89f

File tree

5 files changed

+50
-16
lines changed

5 files changed

+50
-16
lines changed

requirements.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ openpyxl
55
progress
66
pyyaml
77
beautifulsoup4
8-
fosslight_util>=1.4.25
9-
fosslight_source>=1.6.30
8+
fosslight_util>=1.4.29
9+
fosslight_source>=1.7.0
1010
fosslight_dependency>=3.7.4
1111
fosslight_binary>=4.1.24
1212
fosslight_prechecker>=3.0.1

src/fosslight_scanner/_help.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
--no_correction\t Enter if you don't want to correct OSS information with sbom-info.yaml
3737
* Correction mode only supported xlsx format.
3838
--correct_fpath <path> Path to the sbom-info.yaml file
39+
--ui\t\t\t Generate UI mode result file
3940
4041
Options for only 'all' or 'bin' mode
4142
-u <db_url>\t\t DB Connection(format :'postgresql://username:password@host:port/database_name')

src/fosslight_scanner/cli.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ def main():
1515
parser.add_argument('--path', '-p', help='Path to analyze (In compare mode, two FOSSLight reports',
1616
dest='path', nargs='+', default="")
1717
parser.add_argument('--wget', '-w', help='Link to be analyzed', type=str, dest='link', default="")
18-
parser.add_argument('--file', '-f', help='Scanner output file format (excel,yaml), Compare mode (excel,html,yaml,json)',
19-
type=str, dest='file', default="")
18+
parser.add_argument('--format', '-f', help='Scanner output file format (excel,yaml), Compare mode (excel,html,yaml,json)',
19+
type=str, dest='format', default="")
2020
parser.add_argument('--output', '-o', help='Output directory or file', type=str, dest='output', default="")
2121
parser.add_argument('--dependency', '-d', help='Dependency arguments', type=str, dest='dep_argument', default="")
2222
parser.add_argument('--url', '-u', help="DB Url", type=str, dest='db_url', default="")
@@ -29,6 +29,7 @@ def main():
2929
action='store_true', required=False, default=False)
3030
parser.add_argument('--correct_fpath', help='Path to the sbom-info.yaml',
3131
type=str, required=False, default='')
32+
parser.add_argument('--ui', help='Generate UI mode result file', action='store_true', required=False, default=False)
3233

3334
try:
3435
args = parser.parse_args()
@@ -40,9 +41,9 @@ def main():
4041
elif args.version:
4142
print_package_version(PKG_NAME, "FOSSLight Scanner Version:")
4243
else:
43-
run_main(args.mode, args.path, args.dep_argument, args.output, args.file,
44+
run_main(args.mode, args.path, args.dep_argument, args.output, args.format,
4445
args.link, args.db_url, args.timer, args.raw, args.core,
45-
not args.no_correction, args.correct_fpath)
46+
not args.no_correction, args.correct_fpath, args.ui)
4647

4748

4849
if __name__ == "__main__":

src/fosslight_scanner/common.py

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import fosslight_util.constant as constant
1515
from fosslight_util.parsing_yaml import parsing_yml
1616
from fosslight_util.write_yaml import create_yaml_with_ossitem
17+
from fosslight_util.write_scancodejson import write_scancodejson
1718
from fosslight_util.read_excel import read_oss_report
1819
from fosslight_util.output_format import write_output_file
1920

@@ -173,7 +174,7 @@ def merge_yamls(_output_dir, merge_yaml_files, final_report, remove_src_data=Fal
173174
try:
174175
for mf in merge_yaml_files:
175176
if os.path.exists(os.path.join(_output_dir, mf)):
176-
oss_list, license_list, err_reason = parsing_yml(os.path.join(_output_dir, mf), _output_dir)
177+
oss_list, _, _ = parsing_yml(os.path.join(_output_dir, mf), _output_dir)
177178

178179
if remove_src_data:
179180
existed_yaml = {}
@@ -201,6 +202,23 @@ def merge_yamls(_output_dir, merge_yaml_files, final_report, remove_src_data=Fal
201202
return success, err_msg
202203

203204

205+
def create_scancodejson(final_report, output_extension, ui_mode_report):
206+
success = True
207+
err_msg = ''
208+
209+
oss_total_list = []
210+
try:
211+
oss_total_list = get_osslist(os.path.dirname(final_report), os.path.basename(final_report),
212+
output_extension, '')
213+
write_scancodejson(os.path.dirname(ui_mode_report), os.path.basename(ui_mode_report),
214+
oss_total_list)
215+
except Exception as ex:
216+
err_msg = ex
217+
success = False
218+
219+
return success, err_msg
220+
221+
204222
def correct_scanner_result(_output_dir, output_files, output_extension, exist_src, exist_bin):
205223
src_oss_list = []
206224
bin_oss_list = []

src/fosslight_scanner/fosslight_scanner.py

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@
2323
from fosslight_prechecker._precheck import run_lint as prechecker_lint
2424
from .common import (copy_file, call_analysis_api,
2525
overwrite_excel, extract_name_from_link,
26-
merge_yamls, correct_scanner_result)
26+
merge_yamls, correct_scanner_result,
27+
create_scancodejson)
2728
from fosslight_util.write_excel import merge_excels
2829
from ._run_compare import run_compare
2930
import subprocess
@@ -103,7 +104,7 @@ def run_scanner(src_path, dep_arguments, output_path, keep_raw_data=False,
103104
remove_src_data=True, result_log={}, output_file="",
104105
output_extension="", num_cores=-1, db_url="",
105106
default_oss_name="", url="",
106-
correct_mode=True, correct_fpath=""):
107+
correct_mode=True, correct_fpath="", ui_mode=False):
107108
final_excel_dir = output_path
108109
success = True
109110
temp_output_fiiles = []
@@ -191,6 +192,7 @@ def run_scanner(src_path, dep_arguments, output_path, keep_raw_data=False,
191192
try:
192193
output_file_without_ext = os.path.join(final_excel_dir, output_file)
193194
final_report = f"{output_file_without_ext}{output_extension}"
195+
merge_files = [output_files["SRC"], output_files["BIN"], output_files["DEP"]]
194196

195197
if output_extension == ".xlsx":
196198
tmp_dir = f"tmp_{datetime.now().strftime('%y%m%d_%H%M')}"
@@ -210,7 +212,7 @@ def run_scanner(src_path, dep_arguments, output_path, keep_raw_data=False,
210212
if remove_src_data:
211213
overwrite_excel(_output_dir, default_oss_name, "OSS Name")
212214
overwrite_excel(_output_dir, url, "Download Location")
213-
success, err_msg = merge_excels(_output_dir, final_report)
215+
success, err_msg = merge_excels(_output_dir, final_report, merge_files)
214216

215217
if correct_mode:
216218
if exist_src:
@@ -221,17 +223,25 @@ def run_scanner(src_path, dep_arguments, output_path, keep_raw_data=False,
221223
os.path.join(_output_dir, output_files['BIN']))
222224
shutil.rmtree(os.path.join(_output_dir, tmp_dir), ignore_errors=True)
223225
elif output_extension == ".yaml":
224-
merge_yaml_files = [output_files["SRC"], output_files["BIN"], output_files["DEP"]]
225-
success, err_msg = merge_yamls(_output_dir, merge_yaml_files, final_report,
226+
success, err_msg = merge_yamls(_output_dir, merge_files, final_report,
226227
remove_src_data, default_oss_name, url)
227228
if success:
228229
if os.path.isfile(final_report):
230+
logger.info(f'Generated the result file: {final_report}')
229231
result_log["Output File"] = final_report
230232
else:
231233
result_log["Output File"] = 'Nothing is detected from the scanner so output file is not generated.'
232234
else:
233235
logger.error(f"Fail to generate a result file({final_report}): {err_msg}")
234236

237+
if ui_mode:
238+
ui_mode_report = f"{output_file_without_ext}.json"
239+
success, err_msg = create_scancodejson(final_report, output_extension, ui_mode_report)
240+
if success and os.path.isfile(ui_mode_report):
241+
logger.info(f'Generated the ui mode result file: {ui_mode_report}')
242+
else:
243+
logger.error(f'Fail to generate a ui mode result file({ui_mode_report}): {err_msg}')
244+
235245
_str_final_result_log = yaml.safe_dump(result_log, allow_unicode=True, sort_keys=True)
236246
logger.info(_str_final_result_log)
237247
except Exception as ex:
@@ -295,7 +305,7 @@ def init(output_path="", make_outdir=True):
295305

296306

297307
def run_main(mode, path_arg, dep_arguments, output_file_or_dir, file_format, url_to_analyze, db_url,
298-
hide_progressbar=False, keep_raw_data=False, num_cores=-1, correct_mode=True, correct_fpath=""):
308+
hide_progressbar=False, keep_raw_data=False, num_cores=-1, correct_mode=True, correct_fpath="", ui_mode=False):
299309
global _executed_path, _start_time
300310

301311
output_file = ""
@@ -376,16 +386,20 @@ def run_main(mode, path_arg, dep_arguments, output_file_or_dir, file_format, url
376386
default_oss_name = extract_name_from_link(url_to_analyze)
377387
success, src_path = download_source(url_to_analyze, output_path)
378388

379-
if not correct_fpath:
380-
correct_fpath = src_path
389+
if output_extension == ".yaml":
390+
correct_mode = False
391+
correct_fpath = ""
392+
else:
393+
if not correct_fpath:
394+
correct_fpath = src_path
381395

382396
if src_path != "":
383397
run_scanner(src_path, dep_arguments, output_path, keep_raw_data,
384398
run_src, run_bin, run_dep, run_prechecker,
385399
remove_downloaded_source, {}, output_file,
386400
output_extension, num_cores, db_url,
387401
default_oss_name, url_to_analyze,
388-
correct_mode, correct_fpath)
402+
correct_mode, correct_fpath, ui_mode)
389403
try:
390404
if not keep_raw_data:
391405
logger.debug(f"Remove temporary files: {_output_dir}")

0 commit comments

Comments
 (0)