-
Notifications
You must be signed in to change notification settings - Fork 2.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[console] Pre check plugin duplication & console requirement (#2703)
* feat: check in load plugin * feat: console requirement * feat: dependsOn mirai * feat: dependsOn docs * fix: docs * use: net.mamoe.mirai-console * revert * [console] Wrap mirai-console as a plugin * [console] Fix plugin dependencies checking skipped already loaded plugins * [console/tests] Check plugin can depends on mirai-console --------- Co-authored-by: Karlatemp <[email protected]>
- Loading branch information
Showing
8 changed files
with
125 additions
and
7 deletions.
There are no files selected for viewing
10 changes: 10 additions & 0 deletions
10
...on-mirai-console/resources/META-INF/services/net.mamoe.mirai.console.plugin.jvm.JvmPlugin
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
# | ||
# Copyright 2019-2023 Mamoe Technologies and contributors. | ||
# | ||
# 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. | ||
# Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link. | ||
# | ||
# https://github.com/mamoe/mirai/blob/dev/LICENSE | ||
# | ||
|
||
net.mamoe.console.itest.plugincandependsonmiraiconsole.PluginCanDependsOnMiraiConsole |
21 changes: 21 additions & 0 deletions
21
...on-test/testers/plugin-can-depends-on-mirai-console/src/PluginCanDependsOnMiraiConsole.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
/* | ||
* Copyright 2019-2023 Mamoe Technologies and contributors. | ||
* | ||
* 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. | ||
* Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link. | ||
* | ||
* https://github.com/mamoe/mirai/blob/dev/LICENSE | ||
*/ | ||
|
||
package net.mamoe.console.itest.plugincandependsonmiraiconsole | ||
|
||
import net.mamoe.mirai.console.plugin.jvm.JvmPluginDescription | ||
import net.mamoe.mirai.console.plugin.jvm.KotlinPlugin | ||
|
||
internal object PluginCanDependsOnMiraiConsole : KotlinPlugin( | ||
JvmPluginDescription("net.mamoe.tester.plugin-can-depends-mirai-console", "1.0.0") { | ||
dependsOn("net.mamoe.mirai-console") | ||
} | ||
) { | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
72 changes: 72 additions & 0 deletions
72
mirai-console/backend/mirai-console/src/internal/plugin/MiraiConsoleAsPlugin.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
/* | ||
* Copyright 2019-2023 Mamoe Technologies and contributors. | ||
* | ||
* 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. | ||
* Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link. | ||
* | ||
* https://github.com/mamoe/mirai/blob/dev/LICENSE | ||
*/ | ||
|
||
package net.mamoe.mirai.console.internal.plugin | ||
|
||
import net.mamoe.mirai.console.command.ConsoleCommandOwner | ||
import net.mamoe.mirai.console.internal.MiraiConsoleBuildConstants | ||
import net.mamoe.mirai.console.permission.Permission | ||
import net.mamoe.mirai.console.permission.PermissionId | ||
import net.mamoe.mirai.console.plugin.Plugin | ||
import net.mamoe.mirai.console.plugin.PluginManager.INSTANCE.description | ||
import net.mamoe.mirai.console.plugin.description.PluginDependency | ||
import net.mamoe.mirai.console.plugin.description.PluginDescription | ||
import net.mamoe.mirai.console.plugin.loader.PluginLoader | ||
import net.mamoe.mirai.console.util.SemVersion | ||
|
||
internal object MiraiConsoleAsPlugin : Plugin { | ||
// MiraiConsole always enabled | ||
override val isEnabled: Boolean get() = true | ||
|
||
override val loader: PluginLoader<*, *> get() = TheLoader | ||
|
||
override val parentPermission: Permission | ||
get() = ConsoleCommandOwner.parentPermission | ||
|
||
override fun permissionId(name: String): PermissionId { | ||
return ConsoleCommandOwner.permissionId(name) | ||
} | ||
|
||
internal object TheLoader : PluginLoader<Plugin, PluginDescription> { | ||
override fun listPlugins(): List<Plugin> = listOf(MiraiConsoleAsPlugin) | ||
|
||
override fun disable(plugin: Plugin) { | ||
// noop | ||
} | ||
|
||
override fun enable(plugin: Plugin) { | ||
// noop | ||
} | ||
|
||
override fun load(plugin: Plugin) { | ||
// noop | ||
} | ||
|
||
override fun getPluginDescription(plugin: Plugin): PluginDescription { | ||
if (plugin !== MiraiConsoleAsPlugin) { | ||
error("loader not match with " + plugin.description.id) | ||
} | ||
return TheDescription | ||
} | ||
} | ||
|
||
internal object TheDescription : PluginDescription { | ||
override val id: String get() = "net.mamoe.mirai-console" | ||
override val name: String get() = "Console" | ||
override val author: String get() = "Mamoe Technologies" | ||
override val version: SemVersion get() = MiraiConsoleBuildConstants.version | ||
override val info: String get() = "" | ||
override val dependencies: Set<PluginDependency> get() = setOf() | ||
|
||
|
||
override fun toString(): String { | ||
return "PluginDescription[ mirai-console ]" | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters