Skip to content

Commit feccdc4

Browse files
authored
Find the top directory where the manifest file is located (#180)
Signed-off-by: Jiyeong Seok <[email protected]>
1 parent a5734f3 commit feccdc4

File tree

1 file changed

+18
-8
lines changed

1 file changed

+18
-8
lines changed

src/fosslight_dependency/run_dependency_scanner.py

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,10 @@
3333
CUSTOMIZED_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

7685
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='',
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

Comments
 (0)