Changeset 3099


Ignore:
Timestamp:
Dec 19, 2016, 1:00:49 PM (2 years ago)
Author:
Juanma
Message:

wip on plugin architecture

Location:
lliurex-store/trunk/fuentes/lliurex-appstore.install/usr/bin
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • lliurex-store/trunk/fuentes/lliurex-appstore.install/usr/bin/plugins/__init__.py

    r3060 r3099  
    1 from .loadStore import *
    2 from .zmdManager import *
    3 from .debManager import *
    4 from .shManager import *
    5 from .searchManager import *
    6 from .infoManager import *
  • lliurex-store/trunk/fuentes/lliurex-appstore.install/usr/bin/plugins/debManager.py

    r3093 r3099  
    1111                self.partialProgress=0
    1212                #self.pluginInfo=['install','deb','remove','deb','pkginfo','deb','remove','zmd']
    13                 self.pluginInfo=['install','deb','remove','deb','pkginfo','deb']
     13                self.pluginInfo={'install':'deb','remove':'deb','pkginfo':'deb'}
    1414                self.count=0
    1515        #def __init__
  • lliurex-store/trunk/fuentes/lliurex-appstore.install/usr/bin/plugins/example.py

    r3092 r3099  
    1 #Remember to include the plugin in the __ini__ file
     1#The name of the main class must match the file name in lowercase
    22
    3 class exampleplugin:
     3
     4class example:
    45        def __init__(self):
    56                self.example='This is an example plugin'
    67                self.dbg=0
    78                self.progress=0
    8                 self.pluginInfo=['example','*']
     9                #This dict defines wich package_type relies on what action
     10                self.pluginInfo={'example':'*'}
    911        #def __init__
    1012
     
    2022
    2123        def register(self):
    22                 return(self.pluginInfo)
     24                #This function MUST return the dict with the action:package_type pair
     25                #In this example it return nothing
     26                #return(self.pluginInfo)
     27                return({})
    2328
    2429        def execute_action(self,action):
  • lliurex-store/trunk/fuentes/lliurex-appstore.install/usr/bin/plugins/infoManager.py

    r3092 r3099  
    44        def __init__(self):
    55                self.dbg=1
    6                 self.pluginInfo=['info','*']
     6                self.pluginInfo={'info':'*'}
    77                self.applistInfo=[]
    88                self.progress=0
  • lliurex-store/trunk/fuentes/lliurex-appstore.install/usr/bin/plugins/loadStore.py

    r3078 r3099  
    88        def __init__(self):
    99                self.dbg=0
    10                 self.pluginInfo=['load','*']
     10                self.pluginInfo={'load':'*'}
    1111                self.store=''
    1212                self.progress=0
  • lliurex-store/trunk/fuentes/lliurex-appstore.install/usr/bin/plugins/searchManager.py

    r3078 r3099  
    66                self.dbg=1
    77                self.store=''
    8                 self.pluginInfo=['search','*','list','*','list_sections','*']
     8                self.pluginInfo={'search':'*','list':'*','list_sections':'*'}
    99                self.precision=50
    1010                self.applist=[]
  • lliurex-store/trunk/fuentes/lliurex-appstore.install/usr/bin/plugins/shManager.py

    r3060 r3099  
    99                self.locale=locale.getlocale()[0]
    1010                self.dbg=0
    11                 self.pluginInfo=['install','sh']
     11                self.pluginInfo={'install':'sh'}
    1212                if action=='install':
    1313                        self.install_App(app['installerUrl'])
  • lliurex-store/trunk/fuentes/lliurex-appstore.install/usr/bin/plugins/zmdManager.py

    r3093 r3099  
    1414                self.dbg=1
    1515                self.zmdPath='/usr/share/zero-center/zmds'
    16                 self.pluginInfo=['install','zmd','pkginfo','zmd','remove','zmd']
     16                self.pluginInfo={'install':'zmd','pkginfo':'zmd','remove':'zmd'}
    1717                self.progress=0
    1818                self.n4dclient=''
  • lliurex-store/trunk/fuentes/lliurex-appstore.install/usr/bin/storeManager.py

    r3093 r3099  
    3838                self.threadsRunning={}                  #"" "" "" the running threads
    3939                self._define_functions_for_threads()    #Function that loads the dictionary self.threads
    40                 self.pluginDir='plugins'                #Dir that stores the plugins
     40                self.pluginDir=os.getcwd()+'/plugins'           #Path to the dir that stores the plugins
     41                self.pluginMod=os.path.basename(self.pluginDir) #DON'T CHANGE!!!       
     42                oldpwd=os.getcwd()
     43                os.chdir(self.pluginDir)
     44                exec ('import ' + self.pluginMod)               #DON'T CHANGE!!!
     45                os.chdir(oldpwd)
    4146                self.registeredPlugins={}               #Dict that have the relation between plugins and actions
    4247                self.registerProcessProgress={}         #Dict that stores the progress for each function/parentAction pair
     
    5358        def __init_plugins__(self):
    5459                os.chdir(self.pluginDir)
    55                 self.registeredPlugin={}
    56                 pluginFile=open('__init__.py','r')
    57                 for line in pluginFile:
    58                         definedActions=[]
    59                         pluginName=line.split()[1].lower()
    60                         pluginName=pluginName[1:]
    61                         pluginClass=self.pluginDir+'.'+pluginName.lower()
    62                         try:
    63                                 loadedClass=eval(pluginClass)()
    64                                 definedActions=loadedClass.register()
    65                         except Exception as e:
    66                                 print ("Can't initialize "+pluginClass)
    67                                 print ("Reason: "+str(e))
    68                                 pass
    69 
    70                         while definedActions:
    71                                 if definedActions[0] in self.registeredPlugins:
    72                                         aux_actionDicc=self.registeredPlugins[definedActions[0]]
    73                                         aux_actionDicc[definedActions[1]]=pluginName
    74                                         self.registeredPlugins[definedActions[0]]=aux_actionDicc
    75                                 else:
    76                                         self.registeredPlugins[definedActions[0]]={definedActions[1]:pluginName}
    77                                 definedActions.pop(0)
    78                                 definedActions.pop(0)
     60                for mod in os.listdir():
     61                        if not  mod.startswith('_'):
     62                                modName=mod.split('.')[0]
     63                                strImport='from plugins.'+modName+' import *'
     64                                try:
     65                                        exec (strImport)
     66                                except Exception as e:
     67                                        print(str(e))
     68                for mod in (sys.modules.keys()):
     69                        if 'plugins.' in mod:
     70                                definedActions={}
     71                                pluginNameUp=mod.split('.')[-1]
     72                                pluginName=pluginNameUp.lower()
     73                                try:
     74                                        loadedClass=eval(mod+'.'+pluginName)()
     75                                        definedActions=loadedClass.register()
     76                                except Exception as e:
     77                                        print ("Can't initialize "+str(mod)+' '+str(loadedClass))
     78                                        print ("Reason: "+str(e))
     79                                        pass
     80                       
     81                                for action in definedActions.keys():
     82                                        if action not in self.registeredPlugins:
     83                                                self.registeredPlugins[action]={}
     84                                        self.registeredPlugins[action].update({definedActions[action]:pluginNameUp+'.'+pluginName})
    7985                self._debug(str(self.registeredPlugins))
    8086        #def __init_plugins__
     
    148154                        parms="*"
    149155                self._debug("Plugin for "+action+": "+self.registeredPlugins[action][parms])
    150                 exeFunction=eval(self.pluginDir+'.'+self.registeredPlugins[action][parms]+"()")
     156#               exeFunction=eval(self.pluginDir+'.'+self.registeredPlugins[action][parms]+"()")
     157                exeFunction=eval(self.pluginMod+'.'+self.registeredPlugins[action][parms]+"()")
     158#               exeFunction=exec(self.pluginMod+'.'+self.registeredPlugins[action][parms]+"()")
    151159                self._registerProcessProgress(action,exeFunction,launchedby)
    152160                return (exeFunction)
     
    343351                        self._debug("Plugin for generic search: "+self.registeredPlugins[action]['*'])
    344352                        finder=self.registeredPlugins[action][('*')]
    345                         searchFunction=eval(self.pluginDir+'.'+finder+"()")
     353                        searchFunction=eval(self.pluginMod+'.'+finder+"()")
    346354                        result=searchFunction.execute_action(self.store,action,searchItem)
    347355                else:
     
    379387                else:
    380388                        searchItem=[searchItem]
    381                 searchFunction=eval(self.pluginDir+'.'+finder+"()")
     389#               searchFunction=eval(finder+"()")
     390                searchFunction=eval(self.pluginMod+'.'+finder+"()")
    382391                if not launchedby:
    383392                        launchedby=action
Note: See TracChangeset for help on using the changeset viewer.