34 lines
1.1 KiB
Python
34 lines
1.1 KiB
Python
import os
|
|
import importlib.util
|
|
import sys
|
|
from scripts.iib.tool import cwd
|
|
|
|
def load_plugins(plugin_dir):
|
|
plugins = []
|
|
for filename in os.listdir(plugin_dir):
|
|
main_module_path = os.path.join(plugin_dir, filename, 'main.py')
|
|
if not os.path.exists(main_module_path):
|
|
continue
|
|
spec = importlib.util.spec_from_file_location('main', main_module_path)
|
|
module = importlib.util.module_from_spec(spec)
|
|
spec.loader.exec_module(module)
|
|
plugins.append(module)
|
|
return plugins
|
|
|
|
plugin_insts = []
|
|
plugin_inst_map = {}
|
|
# 使用插件
|
|
try:
|
|
plugin_dir = os.path.normpath(os.path.join(cwd, 'plugins'))
|
|
plugins = load_plugins(plugin_dir)
|
|
sys.path.append(plugin_dir)
|
|
for plugin in plugins:
|
|
try:
|
|
res = plugin.Main()
|
|
plugin_insts.append(res)
|
|
plugin_inst_map[res.source_identifier] = res
|
|
print(f'IIB loaded plugin: {res.name}')
|
|
except Exception as e:
|
|
print(f'Error running plugin {plugin.__class__.__name__}: {e}')
|
|
except Exception as e:
|
|
print(f'Error loading plugins: {e}') |