mirror of
https://github.com/mamoe/mirai.git
synced 2025-04-25 04:50:26 +08:00
[console] Fix plugin dependencies checking skipped already loaded plugins
This commit is contained in:
parent
137b4536ae
commit
7f872edb93
@ -20,6 +20,7 @@ import net.mamoe.mirai.console.internal.extension.GlobalComponentStorage
|
||||
import net.mamoe.mirai.console.plugin.NotYetLoadedPlugin
|
||||
import net.mamoe.mirai.console.plugin.Plugin
|
||||
import net.mamoe.mirai.console.plugin.PluginManager
|
||||
import net.mamoe.mirai.console.plugin.PluginManager.INSTANCE.description
|
||||
import net.mamoe.mirai.console.plugin.PluginManager.INSTANCE.safeLoader
|
||||
import net.mamoe.mirai.console.plugin.description.PluginDependency
|
||||
import net.mamoe.mirai.console.plugin.description.PluginDescription
|
||||
@ -209,6 +210,8 @@ internal class PluginManagerImpl(
|
||||
|
||||
@Throws(PluginResolutionException::class)
|
||||
private fun <D : PluginDescription> List<D>.sortByDependencies(): List<D> {
|
||||
val alreadyLoadedPlugins = resolvedPlugins.asSequence().map { it.description }.toList() // snapshot
|
||||
|
||||
val originPluginDescriptions = this@sortByDependencies
|
||||
val pending2BeResolved = originPluginDescriptions.toMutableList()
|
||||
val resolved = ArrayList<D>(pending2BeResolved.size)
|
||||
@ -254,6 +257,8 @@ internal class PluginManagerImpl(
|
||||
pending2BeResolved.forEach { pluginDesc ->
|
||||
val missed = pluginDesc.dependencies.filter { dependency ->
|
||||
val resolvedDep = originPluginDescriptions.findDependency(dependency)
|
||||
?: alreadyLoadedPlugins.findDependency(dependency)
|
||||
|
||||
if (resolvedDep != null) {
|
||||
resolvedDep.checkSatisfies(dependency, pluginDesc)
|
||||
false
|
||||
|
Loading…
Reference in New Issue
Block a user