From 466e017cfbe34ff15a5ae59e352033a42dd3fa72 Mon Sep 17 00:00:00 2001 From: Schrolli Date: Mon, 18 May 2015 09:04:16 +0200 Subject: [PATCH] simple Plugin System --- plugin/__init__.py | 0 plugin/http/__init__.py | 0 plugin/manager.py | 0 plugin/mysql/__init__.py | 0 plugin/template/__init__.py | 0 plugin/template/template.py | 0 plugin_test.py | 5 ----- plugin_test/plugin_test.py | 13 +++++++++++++ plugin_test/pluginloader.py | 22 ++++++++++++++++++++++ plugin_test/plugins/http/__init__.py | 2 ++ plugin_test/plugins/mysql/__init__.py | 2 ++ plugin_test/plugins/template/__init__.py | 2 ++ 12 files changed, 41 insertions(+), 5 deletions(-) delete mode 100644 plugin/__init__.py delete mode 100644 plugin/http/__init__.py delete mode 100644 plugin/manager.py delete mode 100644 plugin/mysql/__init__.py delete mode 100644 plugin/template/__init__.py delete mode 100644 plugin/template/template.py delete mode 100644 plugin_test.py create mode 100644 plugin_test/plugin_test.py create mode 100644 plugin_test/pluginloader.py create mode 100644 plugin_test/plugins/http/__init__.py create mode 100644 plugin_test/plugins/mysql/__init__.py create mode 100644 plugin_test/plugins/template/__init__.py diff --git a/plugin/__init__.py b/plugin/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/plugin/http/__init__.py b/plugin/http/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/plugin/manager.py b/plugin/manager.py deleted file mode 100644 index e69de29..0000000 diff --git a/plugin/mysql/__init__.py b/plugin/mysql/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/plugin/template/__init__.py b/plugin/template/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/plugin/template/template.py b/plugin/template/template.py deleted file mode 100644 index e69de29..0000000 diff --git a/plugin_test.py b/plugin_test.py deleted file mode 100644 index 0323673..0000000 --- a/plugin_test.py +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/python -# -*- coding: cp1252 -*- - -import plugin - diff --git a/plugin_test/plugin_test.py b/plugin_test/plugin_test.py new file mode 100644 index 0000000..daff263 --- /dev/null +++ b/plugin_test/plugin_test.py @@ -0,0 +1,13 @@ +#!/usr/bin/python +# -*- coding: cp1252 -*- + +import time +import pluginloader + +while True: + time.sleep(1) + print ("Alarm!") + for i in pluginloader.getPlugins(): + print("Loading plugin " + i["name"]) + plugin = pluginloader.loadPlugin(i) + plugin.run() \ No newline at end of file diff --git a/plugin_test/pluginloader.py b/plugin_test/pluginloader.py new file mode 100644 index 0000000..346d5d6 --- /dev/null +++ b/plugin_test/pluginloader.py @@ -0,0 +1,22 @@ +#!/usr/bin/python +# -*- coding: cp1252 -*- + +import imp +import os + +PluginFolder = "./plugins" +MainModule = "__init__" + +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"]) \ No newline at end of file diff --git a/plugin_test/plugins/http/__init__.py b/plugin_test/plugins/http/__init__.py new file mode 100644 index 0000000..5f1887e --- /dev/null +++ b/plugin_test/plugins/http/__init__.py @@ -0,0 +1,2 @@ +def run(): + print("throw HTTP Plugin") \ No newline at end of file diff --git a/plugin_test/plugins/mysql/__init__.py b/plugin_test/plugins/mysql/__init__.py new file mode 100644 index 0000000..c61db52 --- /dev/null +++ b/plugin_test/plugins/mysql/__init__.py @@ -0,0 +1,2 @@ +def run(): + print("Throw MySql Plugin") \ No newline at end of file diff --git a/plugin_test/plugins/template/__init__.py b/plugin_test/plugins/template/__init__.py new file mode 100644 index 0000000..1f27ab2 --- /dev/null +++ b/plugin_test/plugins/template/__init__.py @@ -0,0 +1,2 @@ +def run(): + print("Throw template Plugin") \ No newline at end of file