Skip to content

Commit 35fa383

Browse files
authored
Fix the manual option issue (#246)
Signed-off-by: jiyeong.seok <[email protected]>
1 parent ef377d5 commit 35fa383

File tree

1 file changed

+43
-29
lines changed

1 file changed

+43
-29
lines changed

src/fosslight_dependency/run_dependency_scanner.py

Lines changed: 43 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -51,14 +51,14 @@ def paginate_file(file_path):
5151
input("Press Enter to see the next page...")
5252

5353

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=[]):
5555
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)
6262

6363
found_manifest_file = []
6464
for parent, dirs, files in os.walk(input_dir):
@@ -106,7 +106,7 @@ def find_package_manager(input_dir, abs_path_to_exclude=[]):
106106
logger.warning(f"### Set Package Manager = {', '.join(found_package_manager.keys())}")
107107
else:
108108
ret = False
109-
logger.info("It cannot find the manifest file.")
109+
logger.info("Cannot find the manifest file.")
110110

111111
return ret, found_package_manager, input_dir
112112

@@ -175,17 +175,6 @@ def run_dependency_scanner(package_manager='', input_dir='', output_dir_file='',
175175
logger.error(msg)
176176
return False, scan_item
177177

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-
189178
if input_dir:
190179
if os.path.isdir(input_dir):
191180
os.chdir(input_dir)
@@ -199,20 +188,44 @@ def run_dependency_scanner(package_manager='', input_dir='', output_dir_file='',
199188
os.chdir(input_dir)
200189
scan_item.set_cover_pathinfo(input_dir, path_to_exclude)
201190

191+
autodetect = True
202192
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:
206215
os.chdir(input_dir)
207-
except Exception as e:
216+
except Exception as e:
217+
if autodetect:
208218
logger.error(f'Fail to find package manager: {e}')
209219
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.")
213227
ret = False
214-
else:
215-
found_package_manager[package_manager] = ["manual detect ('-m option')"]
228+
return False, scan_item
216229

217230
pass_key = 'PASS'
218231
success_pm = []
@@ -249,7 +262,8 @@ def run_dependency_scanner(package_manager='', input_dir='', output_dir_file='',
249262
'and https://fosslight.org/fosslight-guide-en/scanner/3_dependency.html#-prerequisite.'
250263
scan_item.set_cover_comment(f"Analysis failed Package manager: {', '.join(fail_pm)} ({info_msg})")
251264
else:
252-
scan_item.set_cover_comment("No Package manager detected.")
265+
if autodetect:
266+
scan_item.set_cover_comment("No Package manager detected.")
253267

254268
if ret and graph_path:
255269
graph_path = os.path.abspath(graph_path)

0 commit comments

Comments
 (0)