iosfu.plugin.library.Library now have discover() and load() methods

Tap #1
This commit is contained in:
Felipe Martin 2013-11-19 00:32:15 +01:00
parent 19ea61e32a
commit f025f0f7df
5 changed files with 51 additions and 0 deletions

View File

View File

View File

@ -0,0 +1,12 @@
from iosfu.plugin.base import BasePlugin
from iosfu.plugin.library import Library
plugin_library = Library()
@plugin_library.register
class WhatsappPlugin(BasePlugin):
category = 'Apps'
name = 'Whatsapp'
description = 'Whatsapp.'

View File

@ -1,4 +1,15 @@
from os import listdir, walk
from os.path import join as join_paths, isdir, isfile, realpath, dirname
from importlib import import_module
PATH = dirname(realpath(__file__))
class Library(object):
"""
Plugin library
"""
_instance = None
plugins = {} # Plugin dictonary
@ -13,3 +24,25 @@ class Library(object):
else:
raise RuntimeError(
'Plugin {0} already registered.'.format(plugin_slug))
def load(self, path):
plugin_path = path.replace(PATH, '').replace('/', '.')
plugin_package = 'iosfu.plugin{0}.plugin'.format(plugin_path)
import_module(plugin_package)
def discover(self):
for path, dirs, files in walk(PATH):
if files == ['__init__.py', 'plugin.py']:
# print(path)
# print(dirs)
# print(files)
# print('plugin!')
self.load(path)
# for dirname in listdir(PATH):
# plugin_path = join_paths(PATH, dirname)
# plugin_module = join_paths(PATH, dirname, 'plugin.py')
# plugin_init = join_paths(PATH, dirname, '__init__.py')
# if isdir(plugin_path) and isfile(plugin_module) \
# and isfile(plugin_init):
# self.load(plugin_path, dirname)

6
test.py Normal file
View File

@ -0,0 +1,6 @@
from iosfu.plugin.library import Library
lib = Library()
lib.discover()
print(lib.plugins)