Beispiel #1
0
    def onModuleDiscovered(self, module):
        """ Called with a module to be loaded.

        Notes:
            We may specify code to be prepended and/or appended to this module.
            This code is stored in the appropriate dict.
            For every imported module and each of these two options, only one plugin may do this.
            We check this condition here.

        Args:
            module: the module object
        Returns:
            None
        """
        full_name = module.getFullName()

        pre_code, reason = self.createPreModuleLoadCode(module)

        if pre_code:
            # TODO: We could find a way to handle this.
            if full_name in pre_modules:
                sys.exit("Error, conflicting plug-ins for %s" % full_name)

            plugins_logger.info(
                "Injecting plug-in based pre load code for module '%s':" %
                full_name)
            for line in reason.split("\n"):
                plugins_logger.info("    " + line)

            pre_modules[full_name] = self._createTriggerLoadedModule(
                module=module, trigger_name="-preLoad", code=pre_code)

        post_code, reason = self.createPostModuleLoadCode(module)

        if post_code:
            # TODO: We could find a way to handle this.
            if full_name is post_modules:
                sys.exit("Error, conflicting plug-ins for %s" % full_name)

            plugins_logger.info(
                "Injecting plug-in based post load code for module '%s':" %
                full_name)
            for line in reason.split("\n"):
                plugins_logger.info("    " + line)

            post_modules[full_name] = self._createTriggerLoadedModule(
                module=module, trigger_name="-postLoad", code=post_code)
Beispiel #2
0
 def info(cls, message):
     plugins_logger.info(cls.plugin_name + ": " + message)