3333CUSTOMIZED_FORMAT = {'excel' : '.xlsx' , 'csv' : '.csv' , 'opossum' : '.json' , 'yaml' : '.yaml' ,
3434 'spdx-yaml' : '.yaml' , 'spdx-json' : '.json' , 'spdx-xml' : '.xml' ,
3535 'spdx-tag' : '.tag' }
36+ _exclude_dir = ['node_moduels' , 'venv' ]
3637
3738
38- def find_package_manager ():
39+ def find_package_manager (input_dir ):
3940 ret = True
4041 manifest_file_name = []
4142 for value in const .SUPPORT_PACKAE .values ():
@@ -45,10 +46,17 @@ def find_package_manager():
4546 manifest_file_name .append (value )
4647
4748 found_manifest_file = []
48- for f in manifest_file_name :
49- if os .path .isfile (f ):
50- found_manifest_file .append (f )
51-
49+ for (parent , _ , files ) in os .walk (input_dir ):
50+ if len (files ) < 1 :
51+ continue
52+ if os .path .basename (parent ) in _exclude_dir :
53+ continue
54+ for file in files :
55+ if file in manifest_file_name :
56+ found_manifest_file .append (file )
57+ if len (found_manifest_file ) > 0 :
58+ input_dir = parent
59+ break
5260 found_package_manager = defaultdict (list )
5361 for f_idx in found_manifest_file :
5462 for key , value in const .SUPPORT_PACKAE .items ():
@@ -64,13 +72,14 @@ def find_package_manager():
6472 found_package_manager [key ] = [f_idx ]
6573
6674 if len (found_package_manager ) >= 1 :
67- logger .info (f"Found the manifest file({ ',' .join (found_manifest_file )} ) automatically." )
75+ manifest_file_w_path = map (lambda x : os .path .join (input_dir , x ), found_manifest_file )
76+ logger .info (f"Found the manifest file({ ',' .join (manifest_file_w_path )} ) automatically." )
6877 logger .warning (f"### Set Package Manager = { ', ' .join (found_package_manager .keys ())} " )
6978 else :
7079 ret = False
7180 logger .info ("It cannot find the manifest file." )
7281
73- return ret , found_package_manager
82+ return ret , found_package_manager , input_dir
7483
7584
7685def run_dependency_scanner (package_manager = '' , input_dir = '' , output_dir_file = '' , pip_activate_cmd = '' , pip_deactivate_cmd = '' ,
@@ -141,7 +150,8 @@ def run_dependency_scanner(package_manager='', input_dir='', output_dir_file='',
141150 found_package_manager = {}
142151 if autodetect :
143152 try :
144- ret , found_package_manager = find_package_manager ()
153+ ret , found_package_manager , input_dir = find_package_manager (input_dir )
154+ os .chdir (input_dir )
145155 except Exception as e :
146156 logger .error (f'Fail to find package manager: { e } ' )
147157 ret = False
0 commit comments