3737_exclude_dir = ['node_moduels' , 'venv' ]
3838
3939
40- def find_package_manager (input_dir ):
40+ def find_package_manager (input_dir , abs_path_to_exclude = [] ):
4141 ret = True
4242 manifest_file_name = []
4343 for value in const .SUPPORT_PACKAE .values ():
@@ -52,7 +52,14 @@ def find_package_manager(input_dir):
5252 continue
5353 if os .path .basename (parent ) in _exclude_dir :
5454 continue
55+ if os .path .abspath (parent ) in abs_path_to_exclude :
56+ continue
5557 for file in files :
58+ file_path = os .path .join (parent , file )
59+ file_abs_path = os .path .abspath (file_path )
60+ if any (os .path .commonpath ([file_abs_path , exclude_path ]) == exclude_path
61+ for exclude_path in abs_path_to_exclude ):
62+ continue
5663 if file in manifest_file_name :
5764 found_manifest_file .append (file )
5865 if len (found_manifest_file ) > 0 :
@@ -83,8 +90,9 @@ def find_package_manager(input_dir):
8390 return ret , found_package_manager , input_dir
8491
8592
86- def run_dependency_scanner (package_manager = '' , input_dir = '' , output_dir_file = '' , pip_activate_cmd = '' , pip_deactivate_cmd = '' ,
87- output_custom_dir = '' , app_name = const .default_app_name , github_token = '' , format = '' , direct = True ):
93+ def run_dependency_scanner (package_manager = '' , input_dir = '' , output_dir_file = '' , pip_activate_cmd = '' ,
94+ pip_deactivate_cmd = '' , output_custom_dir = '' , app_name = const .default_app_name ,
95+ github_token = '' , format = '' , direct = True , path_to_exclude = []):
8896 global logger
8997
9098 ret = True
@@ -117,7 +125,8 @@ def run_dependency_scanner(package_manager='', input_dir='', output_dir_file='',
117125 sys .exit (1 )
118126
119127 logger , _result_log = init_log (os .path .join (output_path , "fosslight_log_dep_" + _start_time + ".txt" ),
120- True , logging .INFO , logging .DEBUG , _PKG_NAME )
128+ True , logging .INFO , logging .DEBUG , _PKG_NAME , "" , path_to_exclude )
129+ abs_path_to_exclude = [os .path .abspath (os .path .join (input_dir , path )) for path in path_to_exclude ]
121130
122131 logger .info (f"Tool Info : { _result_log ['Tool Info' ]} " )
123132
@@ -151,7 +160,7 @@ def run_dependency_scanner(package_manager='', input_dir='', output_dir_file='',
151160 found_package_manager = {}
152161 if autodetect :
153162 try :
154- ret , found_package_manager , input_dir = find_package_manager (input_dir )
163+ ret , found_package_manager , input_dir = find_package_manager (input_dir , abs_path_to_exclude )
155164 os .chdir (input_dir )
156165 except Exception as e :
157166 logger .error (f'Fail to find package manager: { e } ' )
@@ -188,7 +197,8 @@ def run_dependency_scanner(package_manager='', input_dir='', output_dir_file='',
188197 fail_pm .append (f"{ pm } ({ ', ' .join (manifest_file_name )} )" )
189198 cover = CoverItem (tool_name = _PKG_NAME ,
190199 start_time = _start_time ,
191- input_path = input_dir )
200+ input_path = input_dir ,
201+ exclude_path = path_to_exclude )
192202 cover_comment_arr = []
193203 if len (found_package_manager .keys ()) > 0 :
194204 if len (success_pm ) > 0 :
@@ -231,6 +241,7 @@ def main():
231241 package_manager = ''
232242 input_dir = ''
233243 output_dir = ''
244+ path_to_exclude = []
234245 pip_activate_cmd = ''
235246 pip_deactivate_cmd = ''
236247 output_custom_dir = ''
@@ -244,6 +255,7 @@ def main():
244255 parser .add_argument ('-v' , '--version' , action = 'store_true' , required = False )
245256 parser .add_argument ('-m' , '--manager' , nargs = 1 , type = str , default = '' , required = False )
246257 parser .add_argument ('-p' , '--path' , nargs = 1 , type = str , required = False )
258+ parser .add_argument ('-e' , '--exclude' , nargs = '*' , required = False , default = [])
247259 parser .add_argument ('-o' , '--output' , nargs = 1 , type = str , required = False )
248260 parser .add_argument ('-a' , '--activate' , nargs = 1 , type = str , default = '' , required = False )
249261 parser .add_argument ('-d' , '--deactivate' , nargs = 1 , type = str , default = '' , required = False )
@@ -268,6 +280,8 @@ def main():
268280 package_manager = '' .join (args .manager )
269281 if args .path : # -p option
270282 input_dir = '' .join (args .path )
283+ if args .exclude : # -e option
284+ path_to_exclude = args .exclude
271285 if args .output : # -o option
272286 output_dir = '' .join (args .output )
273287 if args .activate : # -a option
@@ -301,7 +315,7 @@ def main():
301315 sys .exit (0 )
302316
303317 run_dependency_scanner (package_manager , input_dir , output_dir , pip_activate_cmd , pip_deactivate_cmd ,
304- output_custom_dir , app_name , github_token , format , direct )
318+ output_custom_dir , app_name , github_token , format , direct , path_to_exclude )
305319
306320
307321if __name__ == '__main__' :
0 commit comments