feat(script): add options support
This commit is contained in:
+12
-5
@@ -1,19 +1,26 @@
|
||||
package jadx.plugins.script
|
||||
|
||||
import jadx.api.plugins.JadxPlugin
|
||||
import jadx.api.plugins.JadxPluginContext
|
||||
import jadx.api.plugins.JadxPluginInfo
|
||||
import jadx.api.plugins.gui.JadxGuiContext
|
||||
import jadx.api.plugins.pass.JadxPassContext
|
||||
import jadx.api.plugins.options.JadxPluginOptions
|
||||
import jadx.api.plugins.options.OptionDescription
|
||||
import jadx.plugins.script.passes.JadxScriptAfterLoadPass
|
||||
import jadx.plugins.script.runner.ScriptEval
|
||||
import jadx.plugins.script.runtime.data.JadxScriptAllOptions
|
||||
|
||||
class JadxScriptPlugin : JadxPlugin {
|
||||
class JadxScriptPlugin : JadxPluginOptions {
|
||||
var scriptOptions: JadxScriptAllOptions = JadxScriptAllOptions(emptyMap())
|
||||
|
||||
override fun getPluginInfo() = JadxPluginInfo("jadx-script", "Jadx Script", "Scripting support for jadx")
|
||||
|
||||
override fun setOptions(options: Map<String, String>) {
|
||||
scriptOptions = JadxScriptAllOptions(options)
|
||||
}
|
||||
|
||||
override fun init(init: JadxPluginContext) {
|
||||
val scriptStates = ScriptEval().process(init) ?: return
|
||||
val scriptStates = ScriptEval().process(init, scriptOptions) ?: return
|
||||
init.passContext.addPass(JadxScriptAfterLoadPass(scriptStates))
|
||||
}
|
||||
|
||||
override fun getOptionsDescriptions(): List<OptionDescription> = scriptOptions.descriptions
|
||||
}
|
||||
|
||||
+3
-2
@@ -4,6 +4,7 @@ import jadx.api.JadxDecompiler
|
||||
import jadx.api.plugins.JadxPluginContext
|
||||
import jadx.plugins.script.runtime.JadxScript
|
||||
import jadx.plugins.script.runtime.JadxScriptData
|
||||
import jadx.plugins.script.runtime.data.JadxScriptAllOptions
|
||||
import mu.KotlinLogging
|
||||
import java.io.File
|
||||
import kotlin.script.experimental.api.*
|
||||
@@ -16,7 +17,7 @@ private val LOG = KotlinLogging.logger {}
|
||||
|
||||
class ScriptEval {
|
||||
|
||||
fun process(init: JadxPluginContext): ScriptStates? {
|
||||
fun process(init: JadxPluginContext, scriptOptions: JadxScriptAllOptions): ScriptStates? {
|
||||
val jadx = init.decompiler as JadxDecompiler
|
||||
val scripts = jadx.args.inputFiles.filter { f -> f.name.endsWith(".jadx.kts") }
|
||||
if (scripts.isEmpty()) {
|
||||
@@ -24,7 +25,7 @@ class ScriptEval {
|
||||
}
|
||||
val scriptStates = ScriptStates()
|
||||
for (scriptFile in scripts) {
|
||||
val scriptData = JadxScriptData(jadx, init, scriptFile)
|
||||
val scriptData = JadxScriptData(jadx, init, scriptOptions, scriptFile)
|
||||
load(scriptFile, scriptData)
|
||||
scriptStates.add(scriptFile, scriptData)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user