From 642e9031eb3727ebdca22c75b7c5c602a8775da0 Mon Sep 17 00:00:00 2001 From: Lucaskyy Date: Wed, 13 Apr 2022 20:23:58 +0200 Subject: [PATCH] feat: Add patch metadata Fixes ReVancedTeam/revanced-patches#1 --- src/main/kotlin/app/revanced/patcher/Patcher.kt | 7 ++++--- src/main/kotlin/app/revanced/patcher/patch/Patch.kt | 10 ++++++++-- src/test/kotlin/app/revanced/patcher/PatcherTest.kt | 7 ++++++- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/main/kotlin/app/revanced/patcher/Patcher.kt b/src/main/kotlin/app/revanced/patcher/Patcher.kt index 956f76dc..fc2d33f2 100644 --- a/src/main/kotlin/app/revanced/patcher/Patcher.kt +++ b/src/main/kotlin/app/revanced/patcher/Patcher.kt @@ -3,6 +3,7 @@ package app.revanced.patcher import app.revanced.patcher.cache.Cache import app.revanced.patcher.cache.findIndexed import app.revanced.patcher.patch.Patch +import app.revanced.patcher.patch.PatchMetadata import app.revanced.patcher.patch.PatchResultSuccess import app.revanced.patcher.signature.MethodSignature import app.revanced.patcher.signature.resolver.SignatureResolver @@ -118,14 +119,14 @@ class Patcher( fun applyPatches( stopOnError: Boolean = false, callback: (String) -> Unit = {} - ): Map> { + ): Map> { if (!sigsResolved) { SignatureResolver(cache.classes, signatures).resolve(cache.methodMap) sigsResolved = true } return buildMap { for (patch in patches) { - callback(patch.patchName) + callback(patch.metadata.shortName) val result: Result = try { val pr = patch.execute(cache) if (pr.isSuccess()) { @@ -136,7 +137,7 @@ class Patcher( } catch (e: Exception) { Result.failure(e) } - this[patch.patchName] = result + this[patch.metadata] = result if (result.isFailure && stopOnError) break } } diff --git a/src/main/kotlin/app/revanced/patcher/patch/Patch.kt b/src/main/kotlin/app/revanced/patcher/patch/Patch.kt index 4b35ae46..bd598ff6 100644 --- a/src/main/kotlin/app/revanced/patcher/patch/Patch.kt +++ b/src/main/kotlin/app/revanced/patcher/patch/Patch.kt @@ -2,6 +2,12 @@ package app.revanced.patcher.patch import app.revanced.patcher.cache.Cache -abstract class Patch(val patchName: String) { +abstract class Patch(val metadata: PatchMetadata) { abstract fun execute(cache: Cache): PatchResult -} \ No newline at end of file +} + +data class PatchMetadata( + val shortName: String, + val fullName: String, + val description: String, +) \ No newline at end of file diff --git a/src/test/kotlin/app/revanced/patcher/PatcherTest.kt b/src/test/kotlin/app/revanced/patcher/PatcherTest.kt index de3fb03f..d8eeda9a 100644 --- a/src/test/kotlin/app/revanced/patcher/PatcherTest.kt +++ b/src/test/kotlin/app/revanced/patcher/PatcherTest.kt @@ -4,6 +4,7 @@ import app.revanced.patcher.cache.Cache import app.revanced.patcher.extensions.AccessFlagExtensions.Companion.or import app.revanced.patcher.extensions.addInstructions import app.revanced.patcher.patch.Patch +import app.revanced.patcher.patch.PatchMetadata import app.revanced.patcher.patch.PatchResult import app.revanced.patcher.patch.PatchResultSuccess import app.revanced.patcher.proxy.mutableTypes.MutableField.Companion.toMutable @@ -61,7 +62,11 @@ internal class PatcherTest { ) patcher.addPatches(listOf( - object : Patch("TestPatch") { + object : Patch(PatchMetadata( + "test-patch", + "My Test Patch", + "A very good description." + )) { override fun execute(cache: Cache): PatchResult { // Get the result from the resolver cache val result = cache.methodMap["main-method"]