in modular_api/services/install_service.py [0:0]
def check_uninstall(api_module_config):
"""
Expecting module descriptor file template:
{
"module_name": "$MODULE_NAME",
"cli_path": "$MODULE_CLI_PATH",
"mount_point": "$MOUNT_POINT",
"dependencies": [
{
"module_name": "$MODULE_NAME_DEPENDENT_FROM",
},
...
]
}
Property "dependencies" is optional, but if present - "module_name" in
"dependencies"`s objects is required.
"""
modules_path = Path(__file__).parent.parent / MODULES_DIR
if not modules_path.exists():
return
conflict_modules_list = list()
for module in modules_path.iterdir():
api_file_path = module / API_MODULE_FILE
if not api_file_path.exists():
continue
with open(api_file_path, 'r') as file:
api_module_file = json.load(file)
dependencies = list()
if not api_module_file.get(DEPENDENCIES):
continue
for item in api_module_file.get(DEPENDENCIES):
dependencies.append(item.get(MODULE_NAME_KEY))
conflict_modules_list.append({
f"{api_module_file.get(MODULE_NAME_KEY)}": dependencies
})
if not conflict_modules_list:
return
uninstall_candidate = api_module_config.get(MODULE_NAME_KEY)
result_list = list()
for conflict_item in conflict_modules_list:
for k, v in conflict_item.items():
if uninstall_candidate in v:
result_list.append(k)
if result_list:
message = f'Module "{uninstall_candidate}" you are trying to ' \
f'uninstall is in dependencies of the another module(s). ' \
f'Please uninstall "{", ".join(result_list)}" module(s) first'
_LOG.error(message)
sys.exit(message)