@@ -51,14 +51,14 @@ def paginate_file(file_path):
51
51
input ("Press Enter to see the next page..." )
52
52
53
53
54
- def find_package_manager (input_dir , abs_path_to_exclude = []):
54
+ def find_package_manager (input_dir , abs_path_to_exclude = [], manifest_file_name = [] ):
55
55
ret = True
56
- manifest_file_name = []
57
- for value in const .SUPPORT_PACKAE .values ():
58
- if isinstance (value , list ):
59
- manifest_file_name .extend (value )
60
- else :
61
- manifest_file_name .append (value )
56
+ if not manifest_file_name :
57
+ for value in const .SUPPORT_PACKAE .values ():
58
+ if isinstance (value , list ):
59
+ manifest_file_name .extend (value )
60
+ else :
61
+ manifest_file_name .append (value )
62
62
63
63
found_manifest_file = []
64
64
for parent , dirs , files in os .walk (input_dir ):
@@ -106,7 +106,7 @@ def find_package_manager(input_dir, abs_path_to_exclude=[]):
106
106
logger .warning (f"### Set Package Manager = { ', ' .join (found_package_manager .keys ())} " )
107
107
else :
108
108
ret = False
109
- logger .info ("It cannot find the manifest file." )
109
+ logger .info ("Cannot find the manifest file." )
110
110
111
111
return ret , found_package_manager , input_dir
112
112
@@ -175,17 +175,6 @@ def run_dependency_scanner(package_manager='', input_dir='', output_dir_file='',
175
175
logger .error (msg )
176
176
return False , scan_item
177
177
178
- autodetect = True
179
- if package_manager :
180
- autodetect = False
181
- support_packagemanager = list (const .SUPPORT_PACKAE .keys ())
182
-
183
- if package_manager not in support_packagemanager :
184
- logger .error (f"(-m option) You entered the unsupported package manager({ package_manager } )." )
185
- logger .error ("Please enter the supported package manager({0}) with '-m' option."
186
- .format (", " .join (support_packagemanager )))
187
- return False , scan_item
188
-
189
178
if input_dir :
190
179
if os .path .isdir (input_dir ):
191
180
os .chdir (input_dir )
@@ -199,20 +188,44 @@ def run_dependency_scanner(package_manager='', input_dir='', output_dir_file='',
199
188
os .chdir (input_dir )
200
189
scan_item .set_cover_pathinfo (input_dir , path_to_exclude )
201
190
191
+ autodetect = True
202
192
found_package_manager = {}
203
- if autodetect :
204
- try :
205
- ret , found_package_manager , input_dir = find_package_manager (input_dir , abs_path_to_exclude )
193
+ if package_manager :
194
+ autodetect = False
195
+ support_packagemanager = list (const .SUPPORT_PACKAE .keys ())
196
+
197
+ if package_manager not in support_packagemanager :
198
+ logger .error (f"(-m option) You entered the unsupported package manager({ package_manager } )." )
199
+ logger .error ("Please enter the supported package manager({0}) with '-m' option."
200
+ .format (", " .join (support_packagemanager )))
201
+ return False , scan_item
202
+ manifest_file_name = []
203
+ value = const .SUPPORT_PACKAE [package_manager ]
204
+ if isinstance (value , list ):
205
+ manifest_file_name .extend (value )
206
+ else :
207
+ manifest_file_name .append (value )
208
+ scan_item .set_cover_comment (f"Manual detect mode (-m { package_manager } )" )
209
+ else :
210
+ manifest_file_name = []
211
+
212
+ try :
213
+ ret , found_package_manager , input_dir = find_package_manager (input_dir , abs_path_to_exclude , manifest_file_name )
214
+ if ret :
206
215
os .chdir (input_dir )
207
- except Exception as e :
216
+ except Exception as e :
217
+ if autodetect :
208
218
logger .error (f'Fail to find package manager: { e } ' )
209
219
ret = False
210
- finally :
211
- if not ret :
212
- logger .warning ("Dependency scanning terminated because the package manager was not found." )
220
+ finally :
221
+ if not ret :
222
+ if not autodetect :
223
+ logger .info ('Try to analyze dependency without manifest file. (Manual mode)' )
224
+ found_package_manager [package_manager ] = []
225
+ else :
226
+ logger .error ("Terminated: package manager could not be found." )
213
227
ret = False
214
- else :
215
- found_package_manager [package_manager ] = ["manual detect ('-m option')" ]
228
+ return False , scan_item
216
229
217
230
pass_key = 'PASS'
218
231
success_pm = []
@@ -249,7 +262,8 @@ def run_dependency_scanner(package_manager='', input_dir='', output_dir_file='',
249
262
'and https://fosslight.org/fosslight-guide-en/scanner/3_dependency.html#-prerequisite.'
250
263
scan_item .set_cover_comment (f"Analysis failed Package manager: { ', ' .join (fail_pm )} ({ info_msg } )" )
251
264
else :
252
- scan_item .set_cover_comment ("No Package manager detected." )
265
+ if autodetect :
266
+ scan_item .set_cover_comment ("No Package manager detected." )
253
267
254
268
if ret and graph_path :
255
269
graph_path = os .path .abspath (graph_path )
0 commit comments