2323from fosslight_prechecker ._precheck import run_lint as prechecker_lint
2424from .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 )
2728from fosslight_util .write_excel import merge_excels
2829from ._run_compare import run_compare
2930import 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
297307def 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