From d4827bcc7aecadbce4c8430cf379456e28f01afc Mon Sep 17 00:00:00 2001 From: "clement.hector" Date: Thu, 23 Sep 2021 11:10:47 +0200 Subject: [PATCH] add validator --- .../plugins/publish/validate_loaded_plugin.py | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 openpype/hosts/maya/plugins/publish/validate_loaded_plugin.py diff --git a/openpype/hosts/maya/plugins/publish/validate_loaded_plugin.py b/openpype/hosts/maya/plugins/publish/validate_loaded_plugin.py new file mode 100644 index 0000000000..81f40abcc3 --- /dev/null +++ b/openpype/hosts/maya/plugins/publish/validate_loaded_plugin.py @@ -0,0 +1,39 @@ +import pyblish.api +import maya.cmds as cmds +import openpype.api +from openpype import lib + + +class ValidateLoadedPlugin(pyblish.api.ContextPlugin): + """Ensure there are no unauthorized loaded plugins""" + + label = "Loaded Plugin" + order = pyblish.api.ValidatorOrder + host = ["maya"] + actions = [openpype.api.RepairContextAction] + + @classmethod + def get_invalid(cls, context): + + invalid = [] + + for plugin in context.data.get("loadedPlugins"): + if plugin not in cls.authorized_plugins: + invalid.append(plugin) + + return invalid + + def process(self, context): + + invalid = self.get_invalid(context) + if invalid: + raise RuntimeError( + "Found forbidden plugin name: {}".format(", ".join(invalid)) + ) + + @classmethod + def repair(cls, context): + """Unload forbidden plugins""" + + for plugin in cls.get_invalid(context): + cmds.unloadPlugin(plugin, force=True)