refactor: make input plugin api similar to pass plugins
This commit is contained in:
+5
-11
@@ -1,26 +1,20 @@
|
||||
package jadx.plugins.script
|
||||
|
||||
import jadx.api.plugins.JadxPlugin
|
||||
import jadx.api.plugins.JadxPluginContext
|
||||
import jadx.api.plugins.JadxPluginInfo
|
||||
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 : JadxPluginOptions {
|
||||
var scriptOptions: JadxScriptAllOptions = JadxScriptAllOptions(emptyMap())
|
||||
class JadxScriptPlugin : JadxPlugin {
|
||||
private val scriptOptions = JadxScriptAllOptions()
|
||||
|
||||
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) {
|
||||
init.registerOptions(scriptOptions)
|
||||
val scriptStates = ScriptEval().process(init, scriptOptions) ?: return
|
||||
init.passContext.addPass(JadxScriptAfterLoadPass(scriptStates))
|
||||
init.addPass(JadxScriptAfterLoadPass(scriptStates))
|
||||
}
|
||||
|
||||
override fun getOptionsDescriptions(): List<OptionDescription> = scriptOptions.descriptions
|
||||
}
|
||||
|
||||
+10
-3
@@ -1,14 +1,21 @@
|
||||
package jadx.plugins.script.runtime.data
|
||||
|
||||
import jadx.api.plugins.options.JadxPluginOptions
|
||||
import jadx.api.plugins.options.OptionDescription
|
||||
import jadx.api.plugins.options.OptionDescription.OptionType
|
||||
import jadx.api.plugins.options.impl.JadxOptionDescription
|
||||
import jadx.plugins.script.runtime.JadxScriptInstance
|
||||
|
||||
data class JadxScriptAllOptions(
|
||||
val values: Map<String, String>,
|
||||
class JadxScriptAllOptions : JadxPluginOptions {
|
||||
lateinit var values: Map<String, String>
|
||||
val descriptions: MutableList<OptionDescription> = mutableListOf()
|
||||
)
|
||||
|
||||
override fun setOptions(options: Map<String, String>) {
|
||||
values = options
|
||||
}
|
||||
|
||||
override fun getOptionsDescriptions(): MutableList<OptionDescription> = descriptions
|
||||
}
|
||||
|
||||
class ScriptOption<T>(
|
||||
val name: String,
|
||||
|
||||
+1
-1
@@ -69,7 +69,7 @@ class JadxScriptInstance(
|
||||
}
|
||||
|
||||
fun addPass(pass: JadxPass) {
|
||||
scriptData.pluginContext.passContext.addPass(pass)
|
||||
scriptData.pluginContext.addPass(pass)
|
||||
}
|
||||
|
||||
val internalDecompiler: JadxDecompiler
|
||||
|
||||
Reference in New Issue
Block a user