mirror of
https://github.com/pirate/ArchiveBox.git
synced 2025-08-16 03:24:17 +02:00
add abx function to get plugin hooks
This commit is contained in:
@@ -104,3 +104,28 @@ def get_registered_plugins():
|
|||||||
return plugins
|
return plugins
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def get_plugin_hooks(plugin_pkg: str | None) -> Dict[str, Callable]:
|
||||||
|
"""
|
||||||
|
Get all the functions marked with @hookimpl on a module.
|
||||||
|
"""
|
||||||
|
if not plugin_pkg:
|
||||||
|
return {}
|
||||||
|
|
||||||
|
hooks = {}
|
||||||
|
|
||||||
|
plugin_module = importlib.import_module(plugin_pkg)
|
||||||
|
for attr_name in dir(plugin_module):
|
||||||
|
if attr_name.startswith('_'):
|
||||||
|
continue
|
||||||
|
try:
|
||||||
|
attr = getattr(plugin_module, attr_name)
|
||||||
|
if isinstance(attr, Callable):
|
||||||
|
hooks[attr_name] = None
|
||||||
|
pm.parse_hookimpl_opts(plugin_module, attr_name)
|
||||||
|
hooks[attr_name] = attr
|
||||||
|
except Exception as e:
|
||||||
|
print(f'Error getting hookimpls for {plugin_pkg}: {e}')
|
||||||
|
|
||||||
|
return hooks
|
||||||
|
Reference in New Issue
Block a user