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
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()
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))
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)