diff --git a/.idea/.name b/.idea/.name
deleted file mode 100644
index 1579b08..0000000
--- a/.idea/.name
+++ /dev/null
@@ -1 +0,0 @@
-patcher
\ No newline at end of file
diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml
new file mode 100644
index 0000000..1bec35e
--- /dev/null
+++ b/.idea/codeStyles/Project.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml
new file mode 100644
index 0000000..79ee123
--- /dev/null
+++ b/.idea/codeStyles/codeStyleConfig.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml
new file mode 100644
index 0000000..797acea
--- /dev/null
+++ b/.idea/runConfigurations.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/kotlin/net/revanced/patcher/Patcher.kt b/src/main/kotlin/net/revanced/patcher/Patcher.kt
index e4450a1..6a9acfe 100644
--- a/src/main/kotlin/net/revanced/patcher/Patcher.kt
+++ b/src/main/kotlin/net/revanced/patcher/Patcher.kt
@@ -2,23 +2,32 @@ package net.revanced.patcher
import net.revanced.patcher.patch.Patch
import net.revanced.patcher.signature.Signature
+import net.revanced.patcher.store.MethodStore
import net.revanced.patcher.store.PatchStore
-import net.revanced.patcher.store.SignatureStore
-import org.objectweb.asm.Opcodes
import java.io.InputStream
+import java.lang.IllegalStateException
class Patcher(
private val input: InputStream,
- signatures: Array,
+ private val signatures: Array,
patches: Array,
) {
+ private val patchStore = PatchStore()
+ private val methodStore = MethodStore()
+
+ private val scanned = false
+
init {
- SignatureStore.addSignatures(*signatures)
- PatchStore.addPatches(*patches)
+ patchStore.addPatches(*patches)
+ }
+
+ fun scan() {
+ // methodStore.methods = PatternScanner(signatures).resolve()
}
fun patch(): String? {
- for (patch in PatchStore.patches) {
+ if (!scanned) throw IllegalStateException("Pattern scanner not yet ran")
+ for (patch in patchStore.patches) {
val result = patch.execute()
if (result.isSuccess()) continue
return result.error()!!.errorMessage()
diff --git a/src/main/kotlin/net/revanced/patcher/PatternScanner.kt b/src/main/kotlin/net/revanced/patcher/PatternScanner.kt
new file mode 100644
index 0000000..1d96b2f
--- /dev/null
+++ b/src/main/kotlin/net/revanced/patcher/PatternScanner.kt
@@ -0,0 +1,10 @@
+package net.revanced.patcher
+
+import net.revanced.patcher.signature.Signature
+
+class PatternScanner(signatures: Array) {
+ fun resolve() {
+ TODO("Not yet implemented")
+ }
+
+}
diff --git a/src/main/kotlin/net/revanced/patcher/patch/Patch.kt b/src/main/kotlin/net/revanced/patcher/patch/Patch.kt
index d671687..d5ae128 100644
--- a/src/main/kotlin/net/revanced/patcher/patch/Patch.kt
+++ b/src/main/kotlin/net/revanced/patcher/patch/Patch.kt
@@ -1,6 +1,6 @@
package net.revanced.patcher.patch
-class Patch(val fn: () -> PatchResult) {
+class Patch(val name: String, val fn: () -> PatchResult) {
fun execute(): PatchResult {
return fn()
}
diff --git a/src/main/kotlin/net/revanced/patcher/store/MethodStore.kt b/src/main/kotlin/net/revanced/patcher/store/MethodStore.kt
index 19504da..a1a0df5 100644
--- a/src/main/kotlin/net/revanced/patcher/store/MethodStore.kt
+++ b/src/main/kotlin/net/revanced/patcher/store/MethodStore.kt
@@ -1,5 +1,7 @@
package net.revanced.patcher.store
-object MethodStore {
- val methods: Map = mutableMapOf()
+import org.objectweb.asm.tree.MethodNode
+
+class MethodStore {
+ val methods: MutableMap = mutableMapOf()
}
\ No newline at end of file
diff --git a/src/main/kotlin/net/revanced/patcher/store/PatchStore.kt b/src/main/kotlin/net/revanced/patcher/store/PatchStore.kt
index aef36f2..2e1b101 100644
--- a/src/main/kotlin/net/revanced/patcher/store/PatchStore.kt
+++ b/src/main/kotlin/net/revanced/patcher/store/PatchStore.kt
@@ -2,10 +2,12 @@ package net.revanced.patcher.store
import net.revanced.patcher.patch.Patch
-object PatchStore {
- val patches: MutableList = mutableListOf()
+class PatchStore {
+ val patches: MutableMap = mutableMapOf()
fun addPatches(vararg patches: Patch) {
- this.patches.addAll(patches)
+ for (patch in patches) {
+ this.patches[patch.name] = patch
+ }
}
}
\ No newline at end of file
diff --git a/src/main/kotlin/net/revanced/patcher/store/SignatureStore.kt b/src/main/kotlin/net/revanced/patcher/store/SignatureStore.kt
deleted file mode 100644
index fe06950..0000000
--- a/src/main/kotlin/net/revanced/patcher/store/SignatureStore.kt
+++ /dev/null
@@ -1,11 +0,0 @@
-package net.revanced.patcher.store
-
-import net.revanced.patcher.signature.Signature
-
-object SignatureStore {
- private val signatures: MutableList = mutableListOf()
-
- fun addSignatures(vararg signatures: Signature) {
- this.signatures.addAll(signatures)
- }
-}
\ No newline at end of file