17 lines
764 B
Python
17 lines
764 B
Python
import os
|
|
from flask import Flask
|
|
from importlib import import_module
|
|
|
|
"""
|
|
自动载入所有插件,并注入应用上下文
|
|
通过插件内的 manifest 信息识别是否为内置插件,第三方插件需要自行上传到此目录下
|
|
manifest 需注释为第三方,否则会在比对数据库后直接过滤
|
|
"""
|
|
def autoload_addon_and_inject_context(app: Flask):
|
|
addons_dir = os.path.dirname(__file__)
|
|
for item in os.listdir(addons_dir):
|
|
item_path = os.path.join(addons_dir, item)
|
|
if os.path.isdir(item_path) and os.path.exists(os.path.join(item_path, '__init__.py')):
|
|
addon_module = import_module(f'addons.{item}')
|
|
if hasattr(addon_module, 'register_addon'):
|
|
addon_module.register_addon(app) |