feat: allow to disable installed plugins (#2277)
This commit is contained in:
@@ -72,7 +72,7 @@ public class JadxExternalPluginsLoader implements JadxPluginLoader {
|
||||
}
|
||||
|
||||
private void loadInstalledPlugins(Map<Class<? extends JadxPlugin>, JadxPlugin> map, ClassLoader classLoader) {
|
||||
List<Path> jars = JadxPluginsTools.getInstance().getAllPluginJars();
|
||||
List<Path> jars = JadxPluginsTools.getInstance().getEnabledPluginJars();
|
||||
for (Path jar : jars) {
|
||||
classLoaders.add(loadFromJar(map, classLoader, jar));
|
||||
}
|
||||
|
||||
@@ -28,9 +28,6 @@ import jadx.plugins.tools.utils.PluginUtils;
|
||||
|
||||
import static jadx.plugins.tools.utils.PluginFiles.PLUGINS_LIST_CACHE;
|
||||
|
||||
/**
|
||||
* TODO: implement list caching (on disk) with check for new release
|
||||
*/
|
||||
public class JadxPluginsList {
|
||||
private static final JadxPluginsList INSTANCE = new JadxPluginsList();
|
||||
|
||||
|
||||
@@ -124,6 +124,38 @@ public class JadxPluginsTools {
|
||||
return list;
|
||||
}
|
||||
|
||||
public List<Path> getEnabledPluginJars() {
|
||||
List<Path> list = new ArrayList<>();
|
||||
for (JadxPluginMetadata pluginMetadata : loadPluginsJson().getInstalled()) {
|
||||
if (pluginMetadata.isDisabled()) {
|
||||
continue;
|
||||
}
|
||||
list.add(INSTALLED_DIR.resolve(pluginMetadata.getJar()));
|
||||
}
|
||||
collectFromDir(list, DROPINS_DIR);
|
||||
return list;
|
||||
}
|
||||
|
||||
/**
|
||||
* Disable or enable plugin
|
||||
*
|
||||
* @return true if disabled status was changed
|
||||
*/
|
||||
public boolean changeDisabledStatus(String pluginId, boolean disabled) {
|
||||
JadxInstalledPlugins data = loadPluginsJson();
|
||||
JadxPluginMetadata plugin = data.getInstalled().stream()
|
||||
.filter(p -> p.getPluginId().equals(pluginId))
|
||||
.findFirst()
|
||||
.orElseThrow(() -> new RuntimeException("Plugin not found: " + pluginId));
|
||||
if (plugin.isDisabled() == disabled) {
|
||||
return false;
|
||||
}
|
||||
plugin.setDisabled(disabled);
|
||||
data.setUpdated(System.currentTimeMillis());
|
||||
savePluginsJson(data);
|
||||
return true;
|
||||
}
|
||||
|
||||
private @Nullable JadxPluginMetadata update(JadxPluginMetadata plugin) {
|
||||
IJadxPluginResolver resolver = ResolversRegistry.getById(plugin.getResolverId());
|
||||
if (!resolver.isUpdateSupported()) {
|
||||
|
||||
@@ -12,6 +12,7 @@ public class JadxPluginMetadata implements Comparable<JadxPluginMetadata> {
|
||||
private String locationId;
|
||||
private String resolverId;
|
||||
private String jar;
|
||||
private boolean disabled;
|
||||
|
||||
public String getPluginId() {
|
||||
return pluginId;
|
||||
@@ -77,6 +78,14 @@ public class JadxPluginMetadata implements Comparable<JadxPluginMetadata> {
|
||||
this.jar = jar;
|
||||
}
|
||||
|
||||
public boolean isDisabled() {
|
||||
return disabled;
|
||||
}
|
||||
|
||||
public void setDisabled(boolean disabled) {
|
||||
this.disabled = disabled;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object other) {
|
||||
if (this == other) {
|
||||
|
||||
Reference in New Issue
Block a user