refactor(extension): 在搜索到扩展包的情况下不再继续使用低优先级搜索器.

在高优先级搜索器找到一个或以上的扩展包时, 停止调用更低优先级的搜索器,
这有助于避免无意义的远端扩展包搜索行为, 在本地搜索到扩展包后就没有必要再触发远端搜索器搜索了.
This commit is contained in:
2022-02-19 23:26:38 +08:00
parent 52a97b892c
commit f8f80840c6

View File

@ -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
}