44# SPDX-License-Identifier: Apache-2.0
55import sys
66import json
7+ import os
8+ import os .path
79from argparse import ArgumentParser
10+
811from ._help import print_help_msg
912from .fosslight_scanner import run_main , PKG_NAME
1013from ._parse_setting import parse_setting_json
1114from fosslight_util .help import print_package_version
12- import os .path
1315
1416
1517def set_args (mode , path , dep_argument , output , format , link , db_url , timer ,
1618 raw , core , no_correction , correct_fpath , ui , setting , exclude_path ):
19+
20+ selected_source_scanner = "all"
21+ source_write_json_file = False
22+ source_print_matched_text = False
23+ source_time_out = 120
24+ binary_simple = False
25+
1726 if setting and os .path .isfile (setting ):
1827 try :
1928 with open (setting , 'r' , encoding = 'utf-8' ) as file :
2029 data = json .load (file )
2130 s_mode , s_path , s_dep_argument , s_output , s_format , s_link , s_db_url , s_timer , s_raw , s_core , \
22- s_no_correction , s_correct_fpath , s_ui , s_exclude_path = parse_setting_json (data )
31+ s_no_correction , s_correct_fpath , s_ui , s_exclude_path , \
32+ s_selected_source_scanner , s_source_write_json_file , s_source_print_matched_text , \
33+ s_source_time_out , s_binary_simple = parse_setting_json (data )
2334
2435 # direct cli arguments have higher priority than setting file
25- mode = mode if mode else s_mode
26- path = path if path else s_path
27- dep_argument = dep_argument if dep_argument else s_dep_argument
28- output = output if output else s_output
29- format = format if format else s_format
30- link = link if link else s_link
31- db_url = db_url if db_url else s_db_url
32- timer = timer if timer else s_timer
33- raw = raw if raw else s_raw
34- core = core if core else s_core
35- no_correction = no_correction if no_correction else s_no_correction
36- correct_fpath = correct_fpath if correct_fpath else s_correct_fpath
37- ui = ui if ui else s_ui
38- exclude_path = exclude_path if exclude_path else s_exclude_path
36+ mode = mode or s_mode
37+ path = path or s_path
38+ dep_argument = dep_argument or s_dep_argument
39+ output = output or s_output
40+ format = format or s_format
41+ link = link or s_link
42+ db_url = db_url or s_db_url
43+ timer = timer or s_timer
44+ raw = raw or s_raw
45+ core = core if core != - 1 else s_core
46+ no_correction = no_correction or s_no_correction
47+ correct_fpath = correct_fpath or s_correct_fpath
48+ ui = ui or s_ui
49+ exclude_path = exclude_path or s_exclude_path
50+
51+ # These options are only set from the setting file, not from CLI arguments
52+ selected_source_scanner = s_selected_source_scanner or selected_source_scanner
53+ source_write_json_file = s_source_write_json_file
54+ source_print_matched_text = s_source_print_matched_text
55+ source_time_out = s_source_time_out if s_source_time_out != 120 else source_time_out
56+ binary_simple = s_binary_simple
3957
4058 except Exception as e :
4159 print (f"Cannot open setting file: { e } " )
4260 return mode , path , dep_argument , output , format , link , db_url , timer , \
43- raw , core , no_correction , correct_fpath , ui , exclude_path
61+ raw , core , no_correction , correct_fpath , ui , exclude_path , \
62+ selected_source_scanner , source_write_json_file , source_print_matched_text , source_time_out , \
63+ binary_simple
4464
4565
4666def main ():
47- parser = ArgumentParser (description = 'FOSSLight Scanner' , prog = 'fosslight_scanner' , add_help = False )
48- parser .add_argument ('mode' , nargs = '*' , help = 'source| dependency| binary| all| compare' , default = "" )
49- parser .add_argument ('--path' , '-p' , help = 'Path to analyze (In compare mode, two FOSSLight reports' ,
67+ parser = ArgumentParser (description = 'FOSSLight Scanner' ,
68+ prog = 'fosslight_scanner' , add_help = False )
69+ parser .add_argument ('mode' , nargs = '*' ,
70+ help = 'source| dependency| binary| all| compare' ,
71+ default = "" )
72+ parser .add_argument ('--path' , '-p' ,
73+ help = 'Path to analyze (In compare mode, two FOSSLight reports' ,
5074 dest = 'path' , nargs = '+' , default = "" )
51- parser .add_argument ('--wget' , '-w' , help = 'Link to be analyzed' , type = str , dest = 'link' , default = "" )
52- parser .add_argument ('--format' , '-f' , help = 'Scanner output file format (excel,yaml), Compare mode (excel,html,yaml,json)' ,
75+ parser .add_argument ('--wget' , '-w' , help = 'Link to be analyzed' ,
76+ type = str , dest = 'link' , default = "" )
77+ parser .add_argument ('--format' , '-f' ,
78+ help = 'Scanner output file format (excel,yaml), Compare mode (excel,html,yaml,json)' ,
5379 type = str , dest = 'format' , default = "" )
54- parser .add_argument ('--output' , '-o' , help = 'Output directory or file' , type = str , dest = 'output' , default = "" )
55- parser .add_argument ('--dependency' , '-d' , help = 'Dependency arguments' , type = str , dest = 'dep_argument' , default = "" )
56- parser .add_argument ('--url' , '-u' , help = "DB Url" , type = str , dest = 'db_url' , default = "" )
57- parser .add_argument ('--core' , '-c' , help = 'Number of processes to analyze source' , type = int , dest = 'core' , default = - 1 )
58- parser .add_argument ('--raw' , '-r' , help = 'Keep raw data' , action = 'store_true' , dest = 'raw' , default = False )
59- parser .add_argument ('--timer' , '-t' , help = 'Hide the progress bar' , action = 'store_true' , dest = 'timer' , default = False )
60- parser .add_argument ('--version' , '-v' , help = 'Print version' , action = 'store_true' , dest = 'version' , default = False )
61- parser .add_argument ('--help' , '-h' , help = 'Print help message' , action = 'store_true' , dest = 'help' )
62- parser .add_argument ('--exclude' , '-e' , help = 'Path to exclude from analysis' , dest = 'exclude_path' , nargs = '*' , default = [])
63- parser .add_argument ('--setting' , '-s' , help = 'Scanner json setting file' , type = str , dest = 'setting' , default = "" )
64- parser .add_argument ('--no_correction' , help = 'No correction with sbom-info.yaml' ,
80+ parser .add_argument ('--output' , '-o' , help = 'Output directory or file' ,
81+ type = str , dest = 'output' , default = "" )
82+ parser .add_argument ('--dependency' , '-d' , help = 'Dependency arguments' ,
83+ type = str , dest = 'dep_argument' , default = "" )
84+ parser .add_argument ('--url' , '-u' , help = "DB Url" ,
85+ type = str , dest = 'db_url' , default = "" )
86+ parser .add_argument ('--core' , '-c' ,
87+ help = 'Number of processes to analyze source' ,
88+ type = int , dest = 'core' , default = - 1 )
89+ parser .add_argument ('--raw' , '-r' , help = 'Keep raw data' ,
90+ action = 'store_true' , dest = 'raw' , default = False )
91+ parser .add_argument ('--timer' , '-t' , help = 'Hide the progress bar' ,
92+ action = 'store_true' , dest = 'timer' , default = False )
93+ parser .add_argument ('--version' , '-v' , help = 'Print version' ,
94+ action = 'store_true' , dest = 'version' , default = False )
95+ parser .add_argument ('--help' , '-h' , help = 'Print help message' ,
96+ action = 'store_true' , dest = 'help' )
97+ parser .add_argument ('--exclude' , '-e' , help = 'Path to exclude from analysis' ,
98+ dest = 'exclude_path' , nargs = '*' , default = [])
99+ parser .add_argument ('--setting' , '-s' , help = 'Scanner json setting file' ,
100+ type = str , dest = 'setting' , default = "" )
101+ parser .add_argument ('--no_correction' ,
102+ help = 'No correction with sbom-info.yaml' ,
65103 action = 'store_true' , required = False , default = False )
66104 parser .add_argument ('--correct_fpath' , help = 'Path to the sbom-info.yaml' ,
67105 type = str , required = False , default = '' )
68- parser .add_argument ('--ui' , help = 'Generate UI mode result file' , action = 'store_true' , required = False , default = False )
106+ parser .add_argument ('--ui' , help = 'Generate UI mode result file' ,
107+ action = 'store_true' , required = False , default = False )
69108
70109 try :
71110 args = parser .parse_args ()
@@ -78,12 +117,17 @@ def main():
78117 print_package_version (PKG_NAME , "FOSSLight Scanner Version:" )
79118 else :
80119 mode , path , dep_argument , output , format , link , db_url , timer , raw , core , no_correction , correct_fpath , \
81- ui , exclude_path = set_args (args .mode , args .path , args .dep_argument , args .output , args .format ,
82- args .link , args .db_url , args .timer , args .raw , args .core , args .no_correction ,
83- args .correct_fpath , args .ui , args .setting , args .exclude_path )
120+ ui , exclude_path , selected_source_scanner , source_write_json_file , source_print_matched_text , \
121+ source_time_out , binary_simple , = set_args (
122+ args .mode , args .path , args .dep_argument , args .output ,
123+ args .format , args .link , args .db_url , args .timer , args .raw ,
124+ args .core , args .no_correction , args .correct_fpath , args .ui ,
125+ args .setting , args .exclude_path )
84126
85127 run_main (mode , path , dep_argument , output , format , link , db_url , timer ,
86- raw , core , not no_correction , correct_fpath , ui , exclude_path )
128+ raw , core , not no_correction , correct_fpath , ui , exclude_path ,
129+ selected_source_scanner , source_write_json_file , source_print_matched_text ,
130+ source_time_out , binary_simple )
87131
88132
89133if __name__ == "__main__" :
0 commit comments