Skip to content

Commit 05363bf

Browse files
topi314DRSchlaubi
authored andcommitted
fix issue where all plugins get deleted when already present
1 parent b327499 commit 05363bf

File tree

1 file changed

+18
-16
lines changed

1 file changed

+18
-16
lines changed

LavalinkServer/src/main/java/lavalink/server/bootstrap/PluginManager.kt

+18-16
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,11 @@ class PluginManager(val config: PluginsConfig) {
3939
data class PluginJar(val manifest: PluginManifest, val file: File)
4040

4141
val pluginJars = directory.listFiles()!!.filter { it.extension == "jar" }.map {
42-
JarFile(it).use {jar ->
43-
loadPluginManifests(jar).map { manifest -> PluginJar(manifest, it) }
42+
JarFile(it).use { jar ->
43+
loadPluginManifests(jar).map { manifest ->
44+
log.info("Found plugin '${manifest.name}' version ${manifest.version}")
45+
PluginJar(manifest, it)
46+
}
4447
}
4548
}.flatten()
4649

@@ -59,17 +62,18 @@ class PluginManager(val config: PluginsConfig) {
5962

6063
declarations.forEach declarationLoop@{ declaration ->
6164
var hasVersion = false
62-
pluginJars.forEach pluginLoop@{ jar ->
63-
if (declaration.version == jar.manifest.version && !hasVersion) {
64-
hasVersion = true
65-
// We already have this jar so don't redownload it
66-
return@pluginLoop
65+
pluginJars.filter { jar -> declaration.name == jar.manifest.name }
66+
.forEach pluginLoop@{ jar ->
67+
if (declaration.version == jar.manifest.version && !hasVersion) {
68+
hasVersion = true
69+
// We already have this jar so don't redownload it
70+
return@pluginLoop
71+
}
72+
73+
// Delete jar of different versions
74+
if (!jar.file.delete()) throw RuntimeException("Failed to delete ${jar.file.path}")
75+
log.info("Deleted ${jar.file.path}")
6776
}
68-
69-
// Delete jar of different versions
70-
if (!jar.file.delete()) throw RuntimeException("Failed to delete ${jar.file.path}")
71-
log.info("Deleted ${jar.file.path}")
72-
}
7377
if (hasVersion) return@declarationLoop
7478

7579
val url = declaration.run { "$repository${group.replace(".", "/")}/$name/$version/$name-$version.jar" }
@@ -130,7 +134,7 @@ class PluginManager(val config: PluginsConfig) {
130134
private fun loadJar(file: File, cl: URLClassLoader): List<PluginManifest> {
131135
var classCount = 0
132136
val jar = JarFile(file)
133-
var manifests: List<PluginManifest>
137+
var manifests: List<PluginManifest>
134138

135139
jar.use {
136140
manifests = loadPluginManifests(jar)
@@ -160,9 +164,7 @@ class PluginManager(val config: PluginsConfig) {
160164
if (!entry.name.startsWith("lavalink-plugins/")) return@forEach
161165
if (!entry.name.endsWith(".properties")) return@forEach
162166

163-
val manifest = parsePluginManifest(jar.getInputStream(entry))
164-
log.info("Found plugin '${manifest.name}' version ${manifest.version}")
165-
manifests.add(manifest)
167+
manifests.add(parsePluginManifest(jar.getInputStream(entry)))
166168
}
167169
return manifests
168170
}

0 commit comments

Comments
 (0)