Viewing file: __init__.py (1.48 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
# -*- coding: utf-8 -*- # Copyright © Cloud Linux GmbH & Cloud Linux Software, Inc 2010-2022 All Rights Reserved # # Licensed under CLOUD LINUX LICENSE AGREEMENT # http://cloudlinux.com/docs/LICENSE.TXT #
import glob import importlib.util import os import sys
from .helpers import LISTENERS_DIRECTORY
from .modify_domain_hook import ModifyDomainHook from .modify_admin_hook import ModifyAdminHook from .modify_user_hook import ModifyUserHook from .modify_package_hook import ModifyPackageHook
def import_file(filepath): # Fast path: see if the module has already been imported. name = os.path.basename(filepath)[:-3] if name in sys.modules: return sys.modules[name]
# If any of the following calls raises an exception, # there's a problem we can't handle -- let the caller handle it. module_spec = importlib.util.spec_from_file_location(name, filepath) if module_spec is None: raise ImportError(f"Can't find module {name} at {filepath}")
# Load the module, potentially raising ImportError if the module cannot be loaded module = importlib.util.module_from_spec(module_spec) module_spec.loader.exec_module(module)
# Add the module to sys.modules sys.modules[name] = module return module
# automatically scan directory for universal hooks for hook_py in glob.glob(os.path.join(LISTENERS_DIRECTORY, '*.py')): import_file(hook_py)
__all__ = ( 'ModifyDomainHook', 'ModifyAdminHook', 'ModifyUserHook', 'ModifyPackageHook', )
|