diff --git a/opt/ahenk/base/plugin/AbstractPlugin.py b/opt/ahenk/base/plugin/AbstractPlugin.py index 526a676..7174450 100644 --- a/opt/ahenk/base/plugin/AbstractPlugin.py +++ b/opt/ahenk/base/plugin/AbstractPlugin.py @@ -1,34 +1,10 @@ #!/usr/bin/python # -*- coding: utf-8 -*- # Author: İsmail BAŞARAN -import imp,os -""" + + class AbstractPlugin(object): - This is base class for plugins + """This is base class for plugins""" def __init__(self, arg): super(AbstrackPlugin, self).__init__() self.arg = arg -""" -pluginFolder = '/home/ismail/devzone/workspace/LiderAhenk/ahenk/opt/ahenk/plugins' -mainModule = 'main' - -def getPlugins(): - plugins = [] - possibleplugins = os.listdir(pluginFolder) - for i in possibleplugins: - location = os.path.join(pluginFolder, i) - if not os.path.isdir(location) or not mainModule + ".py" in os.listdir(location): - continue - info = imp.find_module(mainModule, [location]) - plugins.append({"name": i, "info": info}) - return plugins - -def loadPlugin(plugin): - return imp.load_module(mainModule, *plugin["info"]) - - -if __name__ == '__main__': - for i in getPlugins(): - print("Loading plugin " + i["name"]) - plugin = loadPlugin(i) - plugin.run("tabisi") diff --git a/opt/ahenk/base/plugin/Plugin.py b/opt/ahenk/base/plugin/Plugin.py new file mode 100644 index 0000000..0510dea --- /dev/null +++ b/opt/ahenk/base/plugin/Plugin.py @@ -0,0 +1,16 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# Author: İsmail BAŞARAN + +class Plugin(object): + """docstring for Plugin""" + def __init__(self, name,mainModule): + super(Plugin, self).__init__() + self.name = name + self.mainModule = mainModule + + def getName(self): + return self.name + + def getMainModule(self): + return self.mainModule diff --git a/opt/ahenk/base/plugin/PluginManager.py b/opt/ahenk/base/plugin/PluginManager.py new file mode 100644 index 0000000..6ab844c --- /dev/null +++ b/opt/ahenk/base/plugin/PluginManager.py @@ -0,0 +1,30 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# Author: İsmail BAŞARAN +from base.plugin.Plugin import Plugin +import imp,os + +class PluginManager(object): + """docstring for PluginManager""" + #implement logger + def __init__(self, configManager): + super(PluginManager, self).__init__() + self.configManager = configManager + self.plugins = [] + + def loadPlugins(): + self.plugins = [] + possibleplugins = os.listdir(self.configManager.get("PLUGIN", "pluginFolderPath")) + for pname in possibleplugins: + location = os.path.join(self.configManager.get("PLUGIN", "pluginFolderPath"), pname) + if not os.path.isdir(location) or not self.configManager.get("PLUGIN", "mainModuleName") + ".py" in os.listdir(location): + continue + info = imp.find_module(self.configManager.get("PLUGIN", "mainModuleName"), [location]) + mainModule = self.loadSinglePlugin(info): + self.plugins.append(Plugin(pname,mainModule)) + + def loadSinglePlugin(pluginInfo): + return imp.load_module(self.configManager.get("PLUGIN", "mainModuleName"), pluginInfo) + + def findSinglePlugin(pluginName): + pass # Not implemented yet