mirror of
https://github.com/LamGC/ScalaBot.git
synced 2025-07-01 12:57:24 +00:00
refactor(extension): 在搜索到扩展包的情况下不再继续使用低优先级搜索器.
在高优先级搜索器找到一个或以上的扩展包时, 停止调用更低优先级的搜索器, 这有助于避免无意义的远端扩展包搜索行为, 在本地搜索到扩展包后就没有必要再触发远端搜索器搜索了.
This commit is contained in:
@ -29,7 +29,7 @@ internal class ExtensionLoader(
|
||||
fun getExtensions(): Set<LoadedExtensionEntry> {
|
||||
val extensionEntries = mutableSetOf<LoadedExtensionEntry>()
|
||||
for (extensionArtifact in bot.extensions) {
|
||||
val extensionFilesMap = findExtensionPackageFile(extensionArtifact)
|
||||
val extensionFilesMap = findExtensionPackage(extensionArtifact)
|
||||
val foundedNumber = allFoundedPackageNumber(extensionFilesMap)
|
||||
if (checkConflict(extensionFilesMap)) {
|
||||
printExtensionFileConflictError(extensionArtifact, extensionFilesMap)
|
||||
@ -105,11 +105,19 @@ internal class ExtensionLoader(
|
||||
return result.size
|
||||
}
|
||||
|
||||
private fun findExtensionPackageFile(
|
||||
private fun findExtensionPackage(
|
||||
extensionArtifact: Artifact,
|
||||
): Map<ExtensionPackageFinder, Set<FoundExtensionPackage>> {
|
||||
val result = mutableMapOf<ExtensionPackageFinder, Set<FoundExtensionPackage>>()
|
||||
for (finder in finders) {
|
||||
val sortedFinders = finders.sortedBy { it.getPriority() }
|
||||
var highPriority = sortedFinders.first().getPriority()
|
||||
|
||||
for (finder in sortedFinders) {
|
||||
if (finder.getPriority() > highPriority && result.isNotEmpty()) {
|
||||
break
|
||||
}
|
||||
highPriority = finder.getPriority()
|
||||
|
||||
if (!checkExtensionPackageFinder(finder)) {
|
||||
continue
|
||||
}
|
||||
|
Reference in New Issue
Block a user