mirror of
https://github.com/ReVanced/revanced-cli.git
synced 2026-01-23 19:21:07 +00:00
feat: Add CLI
This commit is contained in:
43
src/main/kotlin/app/revanced/cli/utils/SignatureParser.kt
Normal file
43
src/main/kotlin/app/revanced/cli/utils/SignatureParser.kt
Normal file
@@ -0,0 +1,43 @@
|
||||
package app.revanced.cli.utils
|
||||
import com.google.gson.JsonParser
|
||||
import java.io.File
|
||||
import app.revanced.patcher.signature.MethodSignature
|
||||
import org.jf.dexlib2.AccessFlags
|
||||
import org.jf.dexlib2.Opcodes
|
||||
|
||||
class SignatureParser {
|
||||
companion object {
|
||||
fun parse(signatureJsonPath: String): List<MethodSignature> {
|
||||
val json = File(signatureJsonPath).readText()
|
||||
val signatures = JsonParser.parseString(json).asJsonObject.get("signatures").asJsonArray.map { sig ->
|
||||
val signature = sig.asJsonObject
|
||||
|
||||
val returnType = signature.get("returns").asString
|
||||
|
||||
var accessFlags = 0
|
||||
|
||||
signature
|
||||
.get("accessors").asJsonArray
|
||||
.forEach { accessFlags = accessFlags or AccessFlags.getAccessFlag(it.asString).value }
|
||||
|
||||
val parameters = signature.get("parameters").asJsonArray
|
||||
.map { it.asString }
|
||||
.toTypedArray()
|
||||
|
||||
val opcodes = signature.get("opcodes").asJsonArray
|
||||
.map { Opcodes.getDefault().getOpcodeByName(it.asString)!! }
|
||||
.toTypedArray()
|
||||
|
||||
MethodSignature(
|
||||
signature.get("name").asString,
|
||||
returnType,
|
||||
accessFlags,
|
||||
parameters,
|
||||
opcodes
|
||||
)
|
||||
}
|
||||
|
||||
return signatures
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user