fix: Patch should have access to the Cache

BREAKING CHANGE: Method signature of execute() was changed to include the cache, this will break existing implementations of the Patch class.
This commit is contained in:
Lucaskyy 2022-03-20 22:04:53 +01:00 committed by oSumAtrIX
parent cb9b1b9416
commit 4dd820ffdf
No known key found for this signature in database
GPG key ID: A9B3094ACDB604B4
3 changed files with 7 additions and 4 deletions

View file

@ -23,7 +23,7 @@ class Patcher(
private val patches: MutableList<Patch> = mutableListOf()
init {
val classes = Io.readClassesFromJar(input);
val classes = Io.readClassesFromJar(input)
cache = Cache(classes, MethodResolver(classes, signatures).resolve())
}
@ -35,7 +35,7 @@ class Patcher(
return buildMap {
for (patch in patches) {
val result: Result<Nothing?> = try {
val pr = patch.execute()
val pr = patch.execute(cache)
if (pr.isSuccess()) continue
Result.failure(Exception(pr.error()?.errorMessage() ?: "Unknown error"))
} catch (e: Exception) {

View file

@ -1,5 +1,7 @@
package net.revanced.patcher.patch
import net.revanced.patcher.cache.Cache
abstract class Patch(val patchName: String) {
abstract fun execute(): PatchResult
abstract fun execute(cache: Cache): PatchResult
}

View file

@ -1,5 +1,6 @@
package net.revanced.patcher
import net.revanced.patcher.cache.Cache
import net.revanced.patcher.patch.Patch
import net.revanced.patcher.patch.PatchResult
import net.revanced.patcher.patch.PatchResultSuccess
@ -48,7 +49,7 @@ internal class PatcherTest {
patcher.addPatches(
object : Patch("TestPatch") {
override fun execute(): PatchResult {
override fun execute(cache: Cache): PatchResult {
// Get the method from the resolver cache
val mainMethod = patcher.cache.methods["mainMethod"]
// Get the instruction list