Files
Disy bc904065c3 feat: complete hosted mod sync and launcher interface updates
Add pack sync markers, tagged mod updates, parallel progress, JWT downloads and retry recovery. Include pending onboarding, about scene, compatibility data pack and download fixes.
2026-09-15 19:06:56 +08:00

101 lines
2.5 KiB
Plaintext

import java.security.MessageDigest
plugins {
java
id("com.diffplug.spotless") version "8.0.0"
id("com.gradleup.shadow") version "9.2.2"
}
repositories {
mavenCentral()
}
dependencies {
implementation("org.ow2.asm:asm:9.9")
implementation("org.ow2.asm:asm-tree:9.9")
implementation("com.google.code.gson:gson:2.13.2")
testImplementation(libs.junit.jupiter)
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
}
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}
tasks.withType<JavaCompile>().configureEach {
options.release = 8
options.compilerArgs.addAll(listOf("-Xlint:all", "-Werror"))
}
spotless {
java {
palantirJavaFormat()
removeUnusedImports()
}
}
tasks.jar {
enabled = false
}
tasks.shadowJar {
archiveFileName = "theseus.jar"
manifest {
attributes["Premain-Class"] = "com.modrinth.theseus.agent.TheseusAgent"
}
addMultiReleaseAttribute = false
enableAutoRelocation = true
relocationPrefix = "com.modrinth.theseus.shadow"
}
val authlibInjector by tasks.registering {
notCompatibleWithConfigurationCache("Downloads and verifies a pinned external Java agent")
val output = layout.buildDirectory.file("libs/authlib-injector.jar")
inputs.property("version", "1.2.8")
inputs.property(
"sha256",
"9c7f4343e6c82034958ffb48c14a2cb0c85928be7283103ce17da00c6d5a7b10",
)
outputs.file(output)
doLast {
val cached = output.get().asFile
if (cached.isFile) {
val checksum = MessageDigest.getInstance("SHA-256")
.digest(cached.readBytes())
.joinToString("") { "%02x".format(it) }
if (checksum == inputs.properties["sha256"]) return@doLast
}
val bytes = uri(
"https://authlib-injector.yushi.moe/artifact/56/authlib-injector-1.2.8.jar",
).toURL().readBytes()
val checksum = MessageDigest.getInstance("SHA-256")
.digest(bytes)
.joinToString("") { "%02x".format(it) }
check(checksum == inputs.properties["sha256"]) {
"authlib-injector checksum mismatch: $checksum"
}
output.get().asFile.apply {
parentFile.mkdirs()
writeBytes(bytes)
}
}
}
tasks.build {
dependsOn(authlibInjector)
}
tasks.named<Test>("test") {
useJUnitPlatform()
}
tasks.withType<AbstractArchiveTask>().configureEach {
isPreserveFileTimestamps = false
isReproducibleFileOrder = true
}