mirror of
https://github.com/zhamao-robot/zhamao-framework.git
synced 2026-07-23 00:25:35 +08:00
add --disable-plugins option for server command
This commit is contained in:
@@ -18,6 +18,11 @@ class PluginManager
|
|||||||
/** @var array<string, PluginMeta> 插件信息列表 */
|
/** @var array<string, PluginMeta> 插件信息列表 */
|
||||||
private static array $plugins = [];
|
private static array $plugins = [];
|
||||||
|
|
||||||
|
public static function getPlugins(): array
|
||||||
|
{
|
||||||
|
return self::$plugins;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 传入插件父目录,扫描插件目录下的所有插件并注册添加
|
* 传入插件父目录,扫描插件目录下的所有插件并注册添加
|
||||||
*
|
*
|
||||||
@@ -203,9 +208,16 @@ class PluginManager
|
|||||||
* @param AnnotationParser $parser 传入注解解析器,用于将插件中的事件注解解析出来
|
* @param AnnotationParser $parser 传入注解解析器,用于将插件中的事件注解解析出来
|
||||||
* @throws PluginException
|
* @throws PluginException
|
||||||
*/
|
*/
|
||||||
public static function enablePlugins(AnnotationParser $parser): void
|
public static function enablePlugins(AnnotationParser $parser, array $disable_list = []): void
|
||||||
{
|
{
|
||||||
foreach (self::$plugins as $name => $meta) {
|
foreach (self::$plugins as $name => $meta) {
|
||||||
|
if (in_array($name, $disable_list)) {
|
||||||
|
$meta->disablePlugin();
|
||||||
|
}
|
||||||
|
if (!$meta->isEnabled()) {
|
||||||
|
logger()->notice('插件 ' . $name . ' 已被禁用');
|
||||||
|
continue;
|
||||||
|
}
|
||||||
// 除了内建插件外,输出 log 告知启动插件
|
// 除了内建插件外,输出 log 告知启动插件
|
||||||
if ($meta->getPluginType() !== ZM_PLUGIN_TYPE_NATIVE) {
|
if ($meta->getPluginType() !== ZM_PLUGIN_TYPE_NATIVE) {
|
||||||
logger()->info('正在启用插件 ' . $name);
|
logger()->info('正在启用插件 ' . $name);
|
||||||
|
|||||||
@@ -32,6 +32,8 @@ class PluginMeta implements \JsonSerializable
|
|||||||
/** @var array 元信息原文 */
|
/** @var array 元信息原文 */
|
||||||
private array $metas;
|
private array $metas;
|
||||||
|
|
||||||
|
private bool $enabled = true;
|
||||||
|
|
||||||
private ?ZMPlugin $entity = null;
|
private ?ZMPlugin $entity = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -56,6 +58,21 @@ class PluginMeta implements \JsonSerializable
|
|||||||
$this->root_dir = $root_dir;
|
$this->root_dir = $root_dir;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function enablePlugin(): void
|
||||||
|
{
|
||||||
|
$this->enabled = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function disablePlugin(): void
|
||||||
|
{
|
||||||
|
$this->enabled = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function isEnabled(): bool
|
||||||
|
{
|
||||||
|
return $this->enabled;
|
||||||
|
}
|
||||||
|
|
||||||
public function bindEntity(ZMPlugin $plugin): void
|
public function bindEntity(ZMPlugin $plugin): void
|
||||||
{
|
{
|
||||||
$this->entity = $plugin;
|
$this->entity = $plugin;
|
||||||
|
|||||||
Reference in New Issue
Block a user