33
33
CUSTOMIZED_FORMAT = {'excel' : '.xlsx' , 'csv' : '.csv' , 'opossum' : '.json' , 'yaml' : '.yaml' ,
34
34
'spdx-yaml' : '.yaml' , 'spdx-json' : '.json' , 'spdx-xml' : '.xml' ,
35
35
'spdx-tag' : '.tag' }
36
+ _exclude_dir = ['node_moduels' , 'venv' ]
36
37
37
38
38
- def find_package_manager ():
39
+ def find_package_manager (input_dir ):
39
40
ret = True
40
41
manifest_file_name = []
41
42
for value in const .SUPPORT_PACKAE .values ():
@@ -45,10 +46,17 @@ def find_package_manager():
45
46
manifest_file_name .append (value )
46
47
47
48
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
52
60
found_package_manager = defaultdict (list )
53
61
for f_idx in found_manifest_file :
54
62
for key , value in const .SUPPORT_PACKAE .items ():
@@ -64,13 +72,14 @@ def find_package_manager():
64
72
found_package_manager [key ] = [f_idx ]
65
73
66
74
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." )
68
77
logger .warning (f"### Set Package Manager = { ', ' .join (found_package_manager .keys ())} " )
69
78
else :
70
79
ret = False
71
80
logger .info ("It cannot find the manifest file." )
72
81
73
- return ret , found_package_manager
82
+ return ret , found_package_manager , input_dir
74
83
75
84
76
85
def 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='',
141
150
found_package_manager = {}
142
151
if autodetect :
143
152
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 )
145
155
except Exception as e :
146
156
logger .error (f'Fail to find package manager: { e } ' )
147
157
ret = False
0 commit comments