poezio/src/plugin_manager.py

26 lines
877 B
Python
Raw Normal View History

class PluginManager(object):
def __init__(self, core):
self.core = core
self.plugins = {}
def load(self, name):
if name in self.plugins:
self.plugins[name].unload()
try:
code = compile(open(name).read(), name, 'exec')
from plugin import BasePlugin
globals = { 'BasePlugin' : BasePlugin }
exec(code, globals)
self.plugins[name] = globals['Plugin'](self.core)
except Exception as e:
self.core.information("Could not load plugin: %s" % (e,))
def unload(self, name):
if name in self.plugins:
try:
self.plugins[name].unload()
del self.plugins[name]
except Exception as e:
self.core.information("Could not unload plugin (may not be safe to try again): %s" % (e,))