Exemple #1
0
    def buildOptions(self):
        assert self.program is not None

        config = self.optionsClass(self.program)

        config.commandPackage = reflect.namedModule(self.commandPackageName)
        log.msg("Loaded the plugin package: {0.commandPackage}".format(config))

        return config
Exemple #2
0
    def _cacheCommands(self):
        """Populate self._commands by loading plugins."""
        if len(self._commands) == 0:
            cmdIface, cmdPkg = self.commandInterface, self.commandPackage
            if cmdIface and cmdPkg:
                for cmd in getPlugins(cmdIface, cmdPkg):
                    log.msg("Loaded command: {0!r}".format(cmd))
                    self._commands[cmd.name] = cmd

        return self._commands.itervalues()
Exemple #3
0
    def installPlugins(self):
        # Prepare plugin directory
        rootDir = self.makeTestRoot()
        pluginDir = os.path.join(rootDir, self.commandPackageName)
        os.makedirs(pluginDir)

        # Write plugins files
        for name, content in self.plugins.iteritems():
            name = "{0}.py".format(name)
            path = os.path.join(pluginDir, name)
            with open(path, "w") as p:
                p.write(content)
        
        # Configure sys.path
        self._sys_path = sys.path[:]
        sys.path.append(os.path.abspath(rootDir))
        log.msg("System path altered to be: {0!r}".format(sys.path))
Exemple #4
0
    def requestAvatar(self, avatarId, _mind, *interfaces):
        log.msg("{0} is requesting an avatar for {1}.".format(avatarId,
                " or ".join(i.__name__ for i in interfaces)))
        if IResource in interfaces:
            if avatarId in self._seen:
                a = self._seen[avatarId]
            else:
                a = self._seen[avatarId] = self.avatarClass(avatarId)
            a.loggedIn()

            interface = IResource
            avatar = AuthorizedPubResource(a, IResource(self.pubSvc))
            logOut = a.loggedOut

        else:
            raise NotImplemented(interfaces)

        log.debug("Avatar: {0!r} {1!r}".format(interface.__name__, avatar.id))
        return (interface, avatar, logOut)