core (plugins): detect import_name conflicts
This commit is contained in:
parent
e8c3e3500d
commit
8deee28320
1 changed files with 8 additions and 4 deletions
|
|
@ -145,7 +145,7 @@ class SAT(service.Service):
|
|||
import sat.plugins
|
||||
plugins_path = os.path.dirname(sat.plugins.__file__)
|
||||
plug_lst = [os.path.splitext(plugin)[0] for plugin in map(os.path.basename, glob(os.path.join(plugins_path, "plugin*.py")))]
|
||||
__plugins_to_import = {} # plugins we still have to import
|
||||
plugins_to_import = {} # plugins we still have to import
|
||||
for plug in plug_lst:
|
||||
plugin_path = 'sat.plugins.' + plug
|
||||
try:
|
||||
|
|
@ -155,10 +155,14 @@ class SAT(service.Service):
|
|||
continue
|
||||
mod = sys.modules[plugin_path]
|
||||
plugin_info = mod.PLUGIN_INFO
|
||||
__plugins_to_import[plugin_info['import_name']] = (plugin_path, mod, plugin_info)
|
||||
import_name = plugin_info['import_name']
|
||||
if import_name in plugins_to_import:
|
||||
log.error(_(u"Name conflict for import name [{import_name}], can't import plugin [{name}]").format(**plugin_info))
|
||||
continue
|
||||
plugins_to_import[import_name] = (plugin_path, mod, plugin_info)
|
||||
while True:
|
||||
self._import_plugins_from_dict(__plugins_to_import)
|
||||
if not __plugins_to_import:
|
||||
self._import_plugins_from_dict(plugins_to_import)
|
||||
if not plugins_to_import:
|
||||
break
|
||||
|
||||
def _import_plugins_from_dict(self, plugins_to_import, import_name=None, optional=False):
|
||||
|
|
|
|||
Loading…
Reference in a new issue