Package entropy :: Package spm :: Package plugins :: Module factory

Source Code for Module entropy.spm.plugins.factory

 1  # -*- coding: utf-8 -*- 
 2  """ 
 3   
 4      @author: Fabio Erculiani <lxnay@sabayonlinux.org> 
 5      @contact: lxnay@sabayonlinux.org 
 6      @copyright: Fabio Erculiani 
 7      @license: GPL-2 
 8   
 9      B{Entropy Source Package Manager Plugins factory module}. 
10   
11  """ 
12  from entropy.const import etpConst 
13  from entropy.core import EntropyPluginFactory 
14  from entropy.core.settings.base import SystemSettings 
15  from entropy.i18n import _ 
16  from entropy.spm.plugins.skel import SpmPlugin 
17  import entropy.spm.plugins.interfaces as plugs 
18   
19  _settings = SystemSettings() 
20  _USER_PLUG = _settings['system'].get('spm_backend') 
21   
22  FACTORY = EntropyPluginFactory(SpmPlugin, plugs, 
23      default_plugin_name = _USER_PLUG) 
24   
25  get_available_plugins = FACTORY.get_available_plugins 
26   
27 -def get_default_class():
28 """ 29 Return default Source Package Manager plugin class. 30 31 @return: default Source Package Manager plugin class 32 @raise SystemError: if no default plugin class has been specified. 33 This usually means a programming error. 34 """ 35 fallback_used = False 36 myplugs = get_available_plugins() 37 if _USER_PLUG is not None: 38 user_plugin = myplugs.get(_USER_PLUG) 39 if user_plugin is not None: 40 return user_plugin 41 fallback_used = True 42 43 for plug_id in sorted(myplugs): 44 plug_class = myplugs[plug_id] 45 if plug_class.IS_DEFAULT: 46 if fallback_used: 47 import warnings 48 warnings.warn("%s: %s" % ( 49 "User configured Source Package Manager Plugin not available, " 50 "using fallback", plug_id,)) 51 return plug_class 52 53 raise SystemError("no SPM default plugin configured")
54
55 -def get_default_instance(output_interface):
56 """ 57 Return the currently configured Entropy SPM interface instance. 58 59 @param output_interface: Entropy Output Interface instance 60 @type output_interface: entropy.output.TextInterface based instance 61 @return: currently selected SPM interface 62 @rtype: entropy.spm.plugins.skel.SpmPlugin based instance 63 """ 64 spm_class = get_default_class() 65 return spm_class(output_interface)
66