Skip to content

Commit

Permalink
fix: Patch should have access to the Cache
Browse files Browse the repository at this point in the history
BREAKING CHANGE: Method signature of execute() was changed to include the cache, this will break existing implementations of the Patch class.
  • Loading branch information
Sculas authored and oSumAtrIX committed Jun 5, 2022
1 parent cb9b1b9 commit 4dd820f
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 4 deletions.
4 changes: 2 additions & 2 deletions src/main/kotlin/net/revanced/patcher/Patcher.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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())
}

Expand All @@ -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) {
Expand Down
4 changes: 3 additions & 1 deletion src/main/kotlin/net/revanced/patcher/patch/Patch.kt
Original file line number Diff line number Diff line change
@@ -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
}
3 changes: 2 additions & 1 deletion src/test/kotlin/net/revanced/patcher/PatcherTest.kt
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -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
Expand Down

0 comments on commit 4dd820f

Please sign in to comment.