更改项目名为NebulaShell
This commit is contained in:
76
store/@{NebulaShell}/plugin-loader-pro/main.py
Normal file
76
store/@{NebulaShell}/plugin-loader-pro/main.py
Normal file
@@ -0,0 +1,76 @@
|
||||
"""插件加载 Pro - 为 plugin-loader 提供高级机制"""
|
||||
from oss.plugin.types import Plugin, register_plugin_type
|
||||
from .core.config import ProConfig
|
||||
from .core.enhancer import PluginLoaderEnhancer
|
||||
from .utils.logger import ProLogger
|
||||
|
||||
|
||||
class PluginLoaderPro(Plugin):
|
||||
"""插件加载 Pro - 增强器"""
|
||||
|
||||
def __init__(self):
|
||||
self.plugin_loader = None
|
||||
self.enhancer = None
|
||||
self.config = None
|
||||
self._started = False
|
||||
|
||||
def meta(self):
|
||||
from oss.plugin.types import Metadata, PluginConfig, Manifest
|
||||
return Manifest(
|
||||
metadata=Metadata(
|
||||
name="plugin-loader-pro",
|
||||
version="1.0.0",
|
||||
author="NebulaShell",
|
||||
description="为 plugin-loader 提供熔断、降级、容错、自动修复等高级机制"
|
||||
),
|
||||
config=PluginConfig(
|
||||
enabled=True,
|
||||
args={}
|
||||
),
|
||||
dependencies=["plugin-loader"]
|
||||
)
|
||||
|
||||
def set_plugin_loader(self, plugin_loader):
|
||||
self.plugin_loader = plugin_loader
|
||||
ProLogger.info("main", "已注入 plugin-loader")
|
||||
|
||||
def init(self, deps: dict = None):
|
||||
if not self.plugin_loader:
|
||||
ProLogger.warn("main", "未找到 plugin-loader 依赖")
|
||||
return
|
||||
|
||||
config = {}
|
||||
if deps:
|
||||
config = deps.get("config", {})
|
||||
|
||||
self.config = ProConfig(config)
|
||||
self.enhancer = PluginLoaderEnhancer(
|
||||
self.plugin_loader.manager,
|
||||
self.config
|
||||
)
|
||||
|
||||
ProLogger.info("main", "增强器已初始化")
|
||||
|
||||
def start(self):
|
||||
if self._started:
|
||||
return
|
||||
self._started = True
|
||||
|
||||
if not self.enhancer:
|
||||
ProLogger.warn("main", "增强器未初始化,跳过启动")
|
||||
return
|
||||
|
||||
ProLogger.info("main", "开始增强 plugin-loader...")
|
||||
self.enhancer.enhance()
|
||||
|
||||
def stop(self):
|
||||
ProLogger.info("main", "停止增强器...")
|
||||
if self.enhancer:
|
||||
self.enhancer.disable()
|
||||
|
||||
|
||||
register_plugin_type("PluginLoaderPro", PluginLoaderPro)
|
||||
|
||||
|
||||
def New():
|
||||
return PluginLoaderPro()
|
||||
Reference in New Issue
Block a user