mirror of https://github.com/fmartingr/iosfu.git
iosfu.plugin.library.Library now have discover() and load() methods
Tap #1
This commit is contained in:
parent
19ea61e32a
commit
f025f0f7df
|
@ -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.'
|
|
@ -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)
|
||||
|
||||
|
|
Loading…
Reference in New Issue