Files

24 lines
859 B
Python
Raw Permalink Normal View History

2018-12-05 09:23:35 -08:00
import os
import importlib.machinery
import importlib.util
2018-12-05 09:23:35 -08:00
PluginFolder = os.path.join(os.path.dirname(os.path.realpath(__file__)),"..","plugins")
MainModule = "__init__"
def get_plugin(name, plugin_path):
search_dirs = [PluginFolder, '.']
2018-12-05 09:23:35 -08:00
if plugin_path:
search_dirs = [plugin_path] + search_dirs
for dir in search_dirs:
location = os.path.join(dir, name)
if not os.path.isdir(location) or not MainModule + ".py" in os.listdir(location):
continue
spec = importlib.machinery.PathFinder.find_spec(MainModule, [location])
return {"name": name, "spec": spec, "path": location}
2018-12-05 09:23:35 -08:00
raise Exception("Could not find plugin with name " + name)
def load_plugin(plugin):
spec = plugin["spec"]
module = importlib.util.module_from_spec(spec)
spec.loader.exec_module(module)
return module