26 lines
877 B
Python
26 lines
877 B
Python
|
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,))
|