wic: move PluginMgr class to pluginbase
As PluginMgr class contains only one method it's better to move it to pluginbase to have all plugin related APIs in one module. (From OE-Core rev: 244585b369ecc0019002ca51bf7f8fd506234462) Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
93b3eb37ff
commit
0c0ed61992
|
@ -32,7 +32,7 @@ import logging
|
|||
import os
|
||||
|
||||
from wic import WicError
|
||||
from wic.plugin import PluginMgr
|
||||
from wic.pluginbase import PluginMgr
|
||||
from wic.utils.misc import get_bitbake_var
|
||||
|
||||
logger = logging.getLogger('wic')
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
import subprocess
|
||||
import logging
|
||||
|
||||
from wic.plugin import PluginMgr, PLUGIN_TYPES
|
||||
from wic.pluginbase import PluginMgr, PLUGIN_TYPES
|
||||
|
||||
logger = logging.getLogger('wic')
|
||||
|
||||
|
|
|
@ -30,7 +30,7 @@ import tempfile
|
|||
|
||||
from wic import WicError
|
||||
from wic.utils.misc import exec_cmd, exec_native_cmd, get_bitbake_var
|
||||
from wic.plugin import PluginMgr
|
||||
from wic.pluginbase import PluginMgr
|
||||
|
||||
logger = logging.getLogger('wic')
|
||||
|
||||
|
|
|
@ -1,66 +0,0 @@
|
|||
#!/usr/bin/env python -tt
|
||||
#
|
||||
# Copyright (c) 2011 Intel, Inc.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by the Free
|
||||
# Software Foundation; version 2 of the License
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
# for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License along
|
||||
# with this program; if not, write to the Free Software Foundation, Inc., 59
|
||||
# Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
import os
|
||||
import logging
|
||||
|
||||
from importlib.machinery import SourceFileLoader
|
||||
|
||||
from wic import pluginbase, WicError
|
||||
from wic.utils.misc import get_bitbake_var
|
||||
|
||||
PLUGIN_TYPES = ["imager", "source"]
|
||||
|
||||
SCRIPTS_PLUGIN_DIR = "scripts/lib/wic/plugins"
|
||||
|
||||
logger = logging.getLogger('wic')
|
||||
|
||||
class PluginMgr:
|
||||
_plugin_dirs = []
|
||||
_plugins = {}
|
||||
|
||||
@classmethod
|
||||
def get_plugins(cls, ptype):
|
||||
"""Get dictionary of <plugin_name>:<class> pairs."""
|
||||
if ptype not in PLUGIN_TYPES:
|
||||
raise WicError('%s is not valid plugin type' % ptype)
|
||||
|
||||
if ptype in cls._plugins:
|
||||
return cls._plugins[ptype]
|
||||
|
||||
# collect plugin directories
|
||||
if not cls._plugin_dirs:
|
||||
cls._plugin_dirs = [os.path.join(os.path.dirname(__file__), 'plugins')]
|
||||
layers = get_bitbake_var("BBLAYERS") or ''
|
||||
for layer_path in layers.split():
|
||||
path = os.path.join(layer_path, SCRIPTS_PLUGIN_DIR)
|
||||
path = os.path.abspath(os.path.expanduser(path))
|
||||
if path not in cls._plugin_dirs and os.path.isdir(path):
|
||||
cls._plugin_dirs.insert(0, path)
|
||||
|
||||
# load plugins
|
||||
for pdir in cls._plugin_dirs:
|
||||
ppath = os.path.join(pdir, ptype)
|
||||
if os.path.isdir(ppath):
|
||||
for fname in os.listdir(ppath):
|
||||
if fname.endswith('.py'):
|
||||
mname = fname[:-3]
|
||||
mpath = os.path.join(ppath, fname)
|
||||
SourceFileLoader(mname, mpath).load_module()
|
||||
|
||||
cls._plugins[ptype] = pluginbase.get_plugins(ptype)
|
||||
return cls._plugins[ptype]
|
|
@ -15,16 +15,59 @@
|
|||
# with this program; if not, write to the Free Software Foundation, Inc., 59
|
||||
# Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
__all__ = ['ImagerPlugin', 'SourcePlugin', 'get_plugins']
|
||||
__all__ = ['ImagerPlugin', 'SourcePlugin']
|
||||
|
||||
import os
|
||||
import logging
|
||||
|
||||
from collections import defaultdict
|
||||
from importlib.machinery import SourceFileLoader
|
||||
|
||||
from wic import WicError
|
||||
from wic.utils.misc import get_bitbake_var
|
||||
|
||||
PLUGIN_TYPES = ["imager", "source"]
|
||||
|
||||
SCRIPTS_PLUGIN_DIR = "scripts/lib/wic/plugins"
|
||||
|
||||
logger = logging.getLogger('wic')
|
||||
|
||||
class PluginMgr:
|
||||
_plugin_dirs = []
|
||||
_plugins = {}
|
||||
|
||||
@classmethod
|
||||
def get_plugins(cls, ptype):
|
||||
"""Get dictionary of <plugin_name>:<class> pairs."""
|
||||
if ptype not in PLUGIN_TYPES:
|
||||
raise WicError('%s is not valid plugin type' % ptype)
|
||||
|
||||
if ptype in cls._plugins:
|
||||
return cls._plugins[ptype]
|
||||
|
||||
# collect plugin directories
|
||||
if not cls._plugin_dirs:
|
||||
cls._plugin_dirs = [os.path.join(os.path.dirname(__file__), 'plugins')]
|
||||
layers = get_bitbake_var("BBLAYERS") or ''
|
||||
for layer_path in layers.split():
|
||||
path = os.path.join(layer_path, SCRIPTS_PLUGIN_DIR)
|
||||
path = os.path.abspath(os.path.expanduser(path))
|
||||
if path not in cls._plugin_dirs and os.path.isdir(path):
|
||||
cls._plugin_dirs.insert(0, path)
|
||||
|
||||
# load plugins
|
||||
for pdir in cls._plugin_dirs:
|
||||
ppath = os.path.join(pdir, ptype)
|
||||
if os.path.isdir(ppath):
|
||||
for fname in os.listdir(ppath):
|
||||
if fname.endswith('.py'):
|
||||
mname = fname[:-3]
|
||||
mpath = os.path.join(ppath, fname)
|
||||
SourceFileLoader(mname, mpath).load_module()
|
||||
|
||||
cls._plugins[ptype] = PluginMeta.plugins.get(ptype)
|
||||
return cls._plugins[ptype]
|
||||
|
||||
class PluginMeta(type):
|
||||
plugins = defaultdict(dict)
|
||||
def __new__(cls, name, bases, attrs):
|
||||
|
@ -97,5 +140,3 @@ class SourcePlugin(metaclass=PluginMeta):
|
|||
"""
|
||||
logger.debug("SourcePlugin: do_prepare_partition: part: %s", part)
|
||||
|
||||
def get_plugins(typen):
|
||||
return PluginMeta.plugins.get(typen)
|
||||
|
|
|
@ -35,8 +35,7 @@ from time import strftime
|
|||
from wic import WicError
|
||||
from wic.filemap import sparse_copy
|
||||
from wic.ksparser import KickStart, KickStartError
|
||||
from wic.plugin import PluginMgr
|
||||
from wic.pluginbase import ImagerPlugin
|
||||
from wic.pluginbase import PluginMgr, ImagerPlugin
|
||||
from wic.utils.misc import get_bitbake_var, exec_cmd, exec_native_cmd
|
||||
|
||||
logger = logging.getLogger('wic')
|
||||
|
|
Loading…
Reference in New Issue