| 115 | self.loop.create_task(op.run(self.get_services())) |
| 116 | |
| 117 | async def load_plugins(self, plugins): |
| 118 | def trim(p): |
| 119 | if p.startswith('.'): |
| 120 | return False |
| 121 | return True |
| 122 | |
| 123 | async def load(p): |
| 124 | plugin = Plugin(name=p) |
| 125 | if plugin.load_plugin(): |
| 126 | await self.get_service('data_svc').store(plugin) |
| 127 | self._loaded_plugins.append(plugin) |
| 128 | |
| 129 | if plugin.name in self.get_config('plugins') or plugin.name == 'magma': |
| 130 | await plugin.enable(self.get_services()) |
| 131 | self.log.info('Enabled plugin: %s' % plugin.name) |
| 132 | |
| 133 | for plug in filter(trim, plugins): |
| 134 | if not os.path.isdir('plugins/%s' % plug) or not os.path.isfile('plugins/%s/hook.py' % plug): |
| 135 | self.log.error('Problem locating the "%s" plugin. Ensure code base was cloned recursively.' % plug) |
| 136 | exit(0) |
| 137 | asyncio.get_event_loop().create_task(load(plug)) |
| 138 | |
| 139 | templates = ['plugins/%s/templates' % p.lower() for p in self.get_config('plugins')] |
| 140 | templates.append('plugins/magma/dist') |
| 141 | aiohttp_jinja2.setup(self.application, loader=jinja2.FileSystemLoader(templates)) |
| 142 | |
| 143 | async def retrieve_compiled_file(self, name, platform, location=''): |
| 144 | _, path = await self._services.get('file_svc').find_file_path('%s-%s' % (name, platform), location=location) |