Skip to content

Commit 1e5ffa4

Browse files
committed
read from new maven setup
1 parent c6cacce commit 1e5ffa4

7 files changed

Lines changed: 122 additions & 163 deletions

File tree

src/main/kotlin/com/lambda/loader/BaseMavenVersionController.kt

Lines changed: 33 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ abstract class BaseMavenVersionController(
2121

2222
abstract val mavenUrl: String
2323
abstract val stableMetaUrl: URL
24-
abstract val snapshotMetaUrl: URL
24+
abstract val devMetaUrl: URL
2525
abstract val artifactPath: String
2626
abstract val artifactName: String
2727

@@ -39,12 +39,12 @@ abstract class BaseMavenVersionController(
3939
}
4040
}
4141

42-
protected fun checkSnapshotVersion(): String? {
42+
protected fun checkDevVersion(): String? {
4343
return try {
44-
val xml = snapshotMetaUrl.readText()
44+
val xml = devMetaUrl.readText()
4545
parseLatestVersionForMinecraft(xml)
4646
} catch (e: Exception) {
47-
e.printStackTrace()
47+
if (ConfigManager.config.debug) e.printStackTrace()
4848
null
4949
}
5050
}
@@ -102,62 +102,19 @@ abstract class BaseMavenVersionController(
102102
}
103103
}
104104

105-
data class SnapshotInfo(
106-
val version: String,
107-
val timestamp: String,
108-
val buildNumber: String
109-
)
110-
111-
protected fun getLatestSnapshotInfo(): SnapshotInfo? {
112-
return try {
113-
val version = checkSnapshotVersion() ?: return null
114-
val snapshotMetaUrl = URI("$mavenUrl/snapshots/$artifactPath/$version/maven-metadata.xml").toURL()
115-
val xml = snapshotMetaUrl.readText()
116-
parseSnapshotInfo(xml, version)
117-
} catch (e: Exception) {
118-
e.printStackTrace()
119-
null
120-
}
121-
}
122-
123-
protected fun parseSnapshotInfo(xml: String, version: String): SnapshotInfo? {
124-
return try {
125-
val factory = DocumentBuilderFactory.newInstance()
126-
val builder = factory.newDocumentBuilder()
127-
val document = builder.parse(xml.byteInputStream())
128-
129-
val timestampNodes = document.getElementsByTagName("timestamp")
130-
val buildNumberNodes = document.getElementsByTagName("buildNumber")
131-
132-
if (timestampNodes.length > 0 && buildNumberNodes.length > 0) {
133-
val timestamp = timestampNodes.item(0).textContent
134-
val buildNumber = buildNumberNodes.item(0).textContent
135-
SnapshotInfo(version, timestamp, buildNumber)
136-
} else {
137-
null
138-
}
139-
} catch (e: Exception) {
140-
e.printStackTrace()
141-
null
142-
}
143-
}
144-
145-
protected fun getSnapshotJarUrl(): String? {
146-
val snapshotInfo = getLatestSnapshotInfo() ?: return null
147-
val baseVersion = snapshotInfo.version.replace("-SNAPSHOT", "")
148-
val timestamp = snapshotInfo.timestamp
149-
val buildNumber = snapshotInfo.buildNumber
150-
return "$mavenUrl/snapshots/$artifactPath/${snapshotInfo.version}/$artifactName-$baseVersion-$timestamp-$buildNumber.jar"
105+
protected fun getDevJarUrl(): String? {
106+
val version = checkDevVersion() ?: return null
107+
return "$mavenUrl/dev/$artifactPath/$version/$artifactName-$version.jar"
151108
}
152109

153-
protected fun getSnapshotChecksumUrl(): String? {
154-
val jarUrl = getSnapshotJarUrl() ?: return null
110+
protected fun getDevChecksumUrl(): String? {
111+
val jarUrl = getDevJarUrl() ?: return null
155112
return "$jarUrl.md5"
156113
}
157114

158115
protected fun getStableJarUrl(): String? {
159116
val version = checkStableVersion() ?: return null
160-
return "$mavenUrl/releases/$artifactPath/$version/$artifactName-$version.jar"
117+
return "$mavenUrl/stable/$artifactPath/$version/$artifactName-$version.jar"
161118
}
162119

163120
protected fun getStableChecksumUrl(): String? {
@@ -168,50 +125,44 @@ abstract class BaseMavenVersionController(
168125
protected fun getJarUrl(): String? {
169126
return when (getReleaseMode()) {
170127
ReleaseMode.Stable -> {
171-
val releaseUrl = getStableJarUrl()
172-
if (releaseUrl == null) {
128+
val stableUrl = getStableJarUrl()
129+
if (stableUrl == null) {
173130
val versionMsg = getVersionToMatch()?.let { "for version $it" } ?: ""
174-
logger.warning("No stable version found $versionMsg, falling back to snapshot")
175-
getSnapshotJarUrl()
176-
} else releaseUrl
131+
logger.warning("No stable version found $versionMsg, falling back to dev")
132+
getDevJarUrl()
133+
} else stableUrl
177134
}
178-
ReleaseMode.Snapshot -> getSnapshotJarUrl()
135+
ReleaseMode.Dev -> getDevJarUrl()
179136
}
180137
}
181138

182139
protected fun getChecksumUrl(): String? {
183140
return when (getReleaseMode()) {
184141
ReleaseMode.Stable -> {
185-
val releaseChecksumUrl = getStableChecksumUrl()
186-
if (releaseChecksumUrl == null) {
142+
val stableChecksumUrl = getStableChecksumUrl()
143+
if (stableChecksumUrl == null) {
187144
val versionMsg = getVersionToMatch()?.let { "for version $it" } ?: ""
188-
logger.warning("No stable version checksum found $versionMsg, falling back to snapshot")
189-
getSnapshotChecksumUrl()
190-
} else releaseChecksumUrl
145+
logger.warning("No stable version checksum found $versionMsg, falling back to dev")
146+
getDevChecksumUrl()
147+
} else stableChecksumUrl
191148
}
192-
ReleaseMode.Snapshot -> getSnapshotChecksumUrl()
149+
ReleaseMode.Dev -> getDevChecksumUrl()
193150
}
194151
}
195152

196153
protected fun getCacheFileName(): String? {
197-
return when (getReleaseMode()) {
154+
val version = when (getReleaseMode()) {
198155
ReleaseMode.Stable -> {
199-
val version = checkStableVersion()
200-
if (version == null) {
156+
val stableVersion = checkStableVersion()
157+
if (stableVersion == null) {
201158
val versionMsg = getVersionToMatch()?.let { "for version $it" } ?: ""
202-
logger.warning("No stable cache filename found $versionMsg, falling back to snapshot")
203-
val snapshotInfo = getLatestSnapshotInfo() ?: return null
204-
val baseVersion = snapshotInfo.version.replace("-SNAPSHOT", "")
205-
"$artifactName-$baseVersion-${snapshotInfo.timestamp}-${snapshotInfo.buildNumber}.jar"
206-
} else "$artifactName-$version.jar"
207-
}
208-
209-
ReleaseMode.Snapshot -> {
210-
val snapshotInfo = getLatestSnapshotInfo() ?: return null
211-
val baseVersion = snapshotInfo.version.replace("-SNAPSHOT", "")
212-
"$artifactName-$baseVersion-${snapshotInfo.timestamp}-${snapshotInfo.buildNumber}.jar"
159+
logger.warning("No stable cache filename found $versionMsg, falling back to dev")
160+
checkDevVersion() ?: return null
161+
} else stableVersion
213162
}
163+
ReleaseMode.Dev -> checkDevVersion() ?: return null
214164
}
165+
return "$artifactName-$version.jar"
215166
}
216167

217168
protected fun downloadChecksum(): String? {
@@ -296,16 +247,16 @@ abstract class BaseMavenVersionController(
296247
return try {
297248
if (!ensureLatestVersionCached()) {
298249
val stableVersion = checkStableVersion()
299-
val snapshotVersion = checkSnapshotVersion()
250+
val devVersion = checkDevVersion()
300251

301-
if (stableVersion == null && snapshotVersion == null) {
252+
if (stableVersion == null && devVersion == null) {
302253
val versionMsg = getVersionToMatch()?.let { "for version $it" } ?: ""
303254
logger.severe("============================================================")
304255
logger.severe("FATAL ERROR: No $artifactName version found!")
305256
if (versionMsg.isNotEmpty()) {
306257
logger.severe("Target version: $versionMsg")
307258
}
308-
logger.severe("Neither STABLE nor SNAPSHOT versions are available.")
259+
logger.severe("Neither stable nor dev versions are available.")
309260
logger.severe("Please check:")
310261
logger.severe(" 1. Your internet connection")
311262
logger.severe(" 2. Maven repository availability at: $mavenUrl")

src/main/kotlin/com/lambda/loader/Cache.kt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,15 @@ class Cache(baseDir: File = File("lambda")) {
2222
}
2323

2424
private fun clearOldVersions(currentFileName: String) {
25-
val baseName = currentFileName.substringBeforeLast("-").substringBeforeLast(".")
25+
// Extract the artifact name prefix (e.g., "lambda-" from "lambda-0.1.0+1.21.11-dev.1.jar")
26+
// by finding the first digit after the artifact name separator
27+
val prefixEnd = currentFileName.indexOfFirst { it.isDigit() }
28+
val prefix = if (prefixEnd > 0) currentFileName.substring(0, prefixEnd) else return
2629

2730
versionCacheDir.listFiles()?.forEach { file ->
2831
if (!file.isFile || !file.name.endsWith(".jar") || file.name == currentFileName) return@forEach
2932

30-
val fileBaseName = file.name.substringBeforeLast("-").substringBeforeLast(".")
31-
if (fileBaseName != baseName) return@forEach
33+
if (!file.name.startsWith(prefix)) return@forEach
3234

3335
val deleted = file.delete()
3436
if (ConfigManager.config.debug) {

src/main/kotlin/com/lambda/loader/LambdaVersionController.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ class LambdaVersionController(
1414
) : BaseMavenVersionController(cache, versionMatchingEnabled = true) {
1515

1616
override val mavenUrl: String = "https://maven.lambda-client.org"
17-
override val stableMetaUrl: URL = URI("https://maven.lambda-client.org/releases/com/lambda/lambda/maven-metadata.xml").toURL()
18-
override val snapshotMetaUrl: URL = URI("https://maven.lambda-client.org/snapshots/com/lambda/lambda/maven-metadata.xml").toURL()
17+
override val stableMetaUrl: URL = URI("https://maven.lambda-client.org/stable/com/lambda/lambda/maven-metadata.xml").toURL()
18+
override val devMetaUrl: URL = URI("https://maven.lambda-client.org/dev/com/lambda/lambda/maven-metadata.xml").toURL()
1919
override val artifactPath: String = "com/lambda/lambda"
2020
override val artifactName: String = "lambda"
2121

src/main/kotlin/com/lambda/loader/LoaderVersionController.kt

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ class LoaderVersionController(
1616
) : BaseMavenVersionController(cache, versionMatchingEnabled = false) {
1717

1818
override val mavenUrl: String = loaderMavenUrl
19-
override val stableMetaUrl: URL = URI("$mavenUrl/releases/com/lambda/lambda-loader/maven-metadata.xml").toURL()
20-
override val snapshotMetaUrl: URL = URI("$mavenUrl/snapshots/com/lambda/lambda-loader/maven-metadata.xml").toURL()
19+
override val stableMetaUrl: URL = URI("$mavenUrl/stable/com/lambda/lambda-loader/maven-metadata.xml").toURL()
20+
override val devMetaUrl: URL = URI("$mavenUrl/dev/com/lambda/lambda-loader/maven-metadata.xml").toURL()
2121
override val artifactPath: String = "com/lambda/lambda-loader"
2222
override val artifactName: String = "lambda-loader"
2323

@@ -63,8 +63,13 @@ class LoaderVersionController(
6363

6464
val latestVersion = when (getReleaseMode()) {
6565
ReleaseMode.Stable -> checkStableVersion()
66-
ReleaseMode.Snapshot -> checkSnapshotVersion()
67-
}?.substringBefore("+")
66+
ReleaseMode.Dev -> checkDevVersion()
67+
}?.let { fullVersion ->
68+
val base = fullVersion.substringBefore("+")
69+
val afterPlus = fullVersion.substringAfter("+", "")
70+
val devIndex = afterPlus.indexOf("-dev")
71+
if (devIndex >= 0) "$base${afterPlus.substring(devIndex)}" else base
72+
}
6873

6974
if (latestVersion == null) {
7075
logger.warning("Could not fetch latest loader version")
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
package com.lambda.loader.config
22

33
data class Config(
4-
val clientReleaseMode: ReleaseMode = ReleaseMode.Snapshot,
4+
val clientReleaseMode: ReleaseMode = ReleaseMode.Dev,
55
val loaderReleaseMode: ReleaseMode = ReleaseMode.Stable,
66
val debug: Boolean = false
77
)
88

99
enum class ReleaseMode {
1010
Stable,
11-
Snapshot
11+
Dev
1212
}

src/main/kotlin/com/lambda/loader/config/ConfigManager.kt

Lines changed: 28 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -11,33 +11,34 @@ object ConfigManager {
1111

1212
var config: Config = loadConfig()
1313

14-
private fun loadConfig() = if (configFile.exists()) {
15-
try {
16-
val json = configFile.readText()
17-
val rootObject = gson.fromJson(json, JsonObject::class.java)
18-
19-
val autoUpdater = rootObject.getAsJsonObject("AutoUpdater")
20-
21-
if (autoUpdater != null) {
22-
val debug = autoUpdater.get("Debug")?.asBoolean ?: false
23-
val clientBranch = autoUpdater.get("Client Branch")?.asString ?: "Snapshot"
24-
val loaderBranch = autoUpdater.get("Loader Branch")?.asString ?: "Stable"
25-
26-
Config(
27-
clientReleaseMode = branchToReleaseMode(clientBranch),
28-
loaderReleaseMode = branchToReleaseMode(loaderBranch),
29-
debug = debug
30-
)
31-
} else Config()
32-
} catch (_: Exception) {
33-
Config()
34-
}
35-
} else Config()
36-
37-
private fun branchToReleaseMode(branch: String): ReleaseMode {
38-
return when (branch.uppercase()) {
14+
private fun loadConfig() =
15+
if (configFile.exists()) {
16+
try {
17+
val json = configFile.readText()
18+
val rootObject = gson.fromJson(json, JsonObject::class.java)
19+
20+
val autoUpdater = rootObject.getAsJsonObject("AutoUpdater")
21+
val settings = autoUpdater?.getAsJsonObject("Settings")
22+
23+
if (settings != null) {
24+
val debug = settings.get("Debug")?.asBoolean ?: false
25+
val clientBranch = settings.get("Client Branch")?.asString ?: "Dev"
26+
val loaderBranch = settings.get("Loader Branch")?.asString ?: "Stable"
27+
28+
Config(
29+
clientReleaseMode = branchToReleaseMode(clientBranch),
30+
loaderReleaseMode = branchToReleaseMode(loaderBranch),
31+
debug = debug
32+
)
33+
} else Config()
34+
} catch (_: Exception) {
35+
Config()
36+
}
37+
} else Config()
38+
39+
private fun branchToReleaseMode(branch: String) =
40+
when (branch) {
3941
"Stable" -> ReleaseMode.Stable
40-
else -> ReleaseMode.Snapshot
42+
else -> ReleaseMode.Dev
4143
}
42-
}
4344
}

0 commit comments

Comments
 (0)