Add command for unpacking RuneLite flatcaches

Signed-off-by: Graham <gpe@openrs2.org>
Graham 3 years ago
parent ba75306169
commit 3e60a82ca1
  1. 1
      all/build.gradle.kts
  2. 2
      all/src/main/kotlin/org/openrs2/Command.kt
  3. 32
      cache-cli/build.gradle.kts
  4. 14
      cache-cli/src/main/kotlin/org/openrs2/cache/cli/CacheCommand.kt
  5. 27
      cache-cli/src/main/kotlin/org/openrs2/cache/cli/RuneLiteUnpackCommand.kt
  6. 1
      settings.gradle.kts

@ -17,6 +17,7 @@ application {
dependencies { dependencies {
implementation(projects.archive) implementation(projects.archive)
implementation(projects.bufferGenerator) implementation(projects.bufferGenerator)
implementation(projects.cacheCli)
implementation(projects.compressCli) implementation(projects.compressCli)
implementation(projects.crc32) implementation(projects.crc32)
implementation(projects.deob) implementation(projects.deob)

@ -4,6 +4,7 @@ import com.github.ajalt.clikt.core.NoOpCliktCommand
import com.github.ajalt.clikt.core.subcommands import com.github.ajalt.clikt.core.subcommands
import org.openrs2.archive.ArchiveCommand import org.openrs2.archive.ArchiveCommand
import org.openrs2.buffer.generator.GenerateBufferCommand import org.openrs2.buffer.generator.GenerateBufferCommand
import org.openrs2.cache.cli.CacheCommand
import org.openrs2.compress.cli.CompressCommand import org.openrs2.compress.cli.CompressCommand
import org.openrs2.crc32.Crc32Command import org.openrs2.crc32.Crc32Command
import org.openrs2.deob.DeobfuscateCommand import org.openrs2.deob.DeobfuscateCommand
@ -16,6 +17,7 @@ public class Command : NoOpCliktCommand(name = "openrs2") {
init { init {
subcommands( subcommands(
ArchiveCommand(), ArchiveCommand(),
CacheCommand(),
CompressCommand(), CompressCommand(),
Crc32Command(), Crc32Command(),
DeobfuscateCommand(), DeobfuscateCommand(),

@ -0,0 +1,32 @@
plugins {
`maven-publish`
application
kotlin("jvm")
}
application {
mainClass.set("org.openrs2.cache.cli.CacheCommandKt")
}
dependencies {
api(libs.clikt)
implementation(projects.cache)
implementation(projects.inject)
}
publishing {
publications.create<MavenPublication>("maven") {
from(components["java"])
pom {
packaging = "jar"
name.set("OpenRS2 Cache CLI")
description.set(
"""
Tools for working with RuneScape caches.
""".trimIndent()
)
}
}
}

@ -0,0 +1,14 @@
package org.openrs2.cache.cli
import com.github.ajalt.clikt.core.NoOpCliktCommand
import com.github.ajalt.clikt.core.subcommands
public fun main(args: Array<String>): Unit = CacheCommand().main(args)
public class CacheCommand : NoOpCliktCommand(name = "cache") {
init {
subcommands(
RuneLiteUnpackCommand()
)
}
}

@ -0,0 +1,27 @@
package org.openrs2.cache.cli
import com.github.ajalt.clikt.core.CliktCommand
import com.github.ajalt.clikt.parameters.arguments.argument
import com.github.ajalt.clikt.parameters.types.path
import com.google.inject.Guice
import io.netty.buffer.ByteBufAllocator
import org.openrs2.cache.CacheModule
import org.openrs2.cache.RuneLiteStore
import org.openrs2.cache.Store
import org.openrs2.inject.CloseableInjector
public class RuneLiteUnpackCommand : CliktCommand(name = "unpack-runelite") {
private val input by argument().path(mustExist = true, canBeFile = false, mustBeReadable = true)
private val output by argument().path(canBeFile = false, mustBeReadable = true, mustBeWritable = true)
override fun run() {
CloseableInjector(Guice.createInjector(CacheModule)).use { injector ->
val alloc = injector.getInstance(ByteBufAllocator::class.java)
val runeLiteStore = injector.getInstance(RuneLiteStore::class.java)
Store.open(output, alloc).use { store ->
runeLiteStore.unpack(input, store)
}
}
}
}

@ -28,6 +28,7 @@ include(
"buffer-generator", "buffer-generator",
"cache", "cache",
"cache-550", "cache-550",
"cache-cli",
"cli", "cli",
"compress", "compress",
"compress-cli", "compress-cli",

Loading…
Cancel
Save