Changeset 5133


Ignore:
Timestamp:
Jun 9, 2017, 2:57:36 PM (2 years ago)
Author:
Juanma
Message:

added appImage plugin

Location:
lliurex-store/trunk/fuentes
Files:
1 added
6 edited

Legend:

Unmodified
Added
Removed
  • lliurex-store/trunk/fuentes/lliurex-store-cli/usr/share/lliurex-store/files/blacklist.json

    r5018 r5133  
    22        "server": [".*gva.*"],
    33        "client": [".*gva.+",".*pmb.*"],
    4         "all": ["ubiquity.+","unity.+","opac"]
     4        "all": ["ubiquity.+",
     5                        "unity.+",
     6                        "opac",
     7                        "ubuntu",
     8                        "language-selector-gnome",
     9                        "gnome-control-center",
     10                        "gnome-power-manager",
     11                        "gnome-tweak-tool",
     12                        "gnome-user-share",
     13                        "configure-debian",
     14                        "nautilus",
     15                        "nautilus..*",
     16                        "update-manager",
     17                        "xfwm4",
     18                        "xfce4.+",
     19                        "xfpanel-switch",
     20                        "appstream",
     21                        "matchbox-panel-manager",
     22                        "obconf",
     23                        "lxappearance",
     24                        "casimir-naturalreaders-launcher",
     25                        "code-of-conduct-signing-assistant"]
    526}
  • lliurex-store/trunk/fuentes/python3-lliurex-store.install/usr/share/lliurexstore/plugins/example.py

    r3275 r5133  
    11#The name of the main class must match the file name in lowercase
    22
    3 
     3#<---- Main scheme for a store plugin
     4#Init: Could accept parameters if we declare them in storeManager's threads dict
    45class example:
    56        def __init__(self):
    6                 self.example='This is an example plugin'
    77                self.dbg=0
    88                self.progress=0
    99                #This dict defines wich package_type relies on what action
     10                #actions are defined in storeManager.
     11                #Non contempled actions must declare its related functions on storeManager (threads dict) and define relationships with other actions in relatedActions.
     12                #action=example
     13                #package='*' (in this case all package_types. It could be "deb", "zmd" or whatever package type)
    1014                self.pluginInfo={'example':'*'}
    1115        #def __init__
    12 
     16       
     17        #public function that sets the debug mode. If we execute storeManager in debug mode all plugins will be launched in this mode.
    1318        def set_debug(self,dbg='1'):
    1419                self.dbg=int(dbg)
     
    2126        #def debug
    2227
     28        #public function accessed by sotremanager in order to register the plugin and its actions
    2329        def register(self):
    2430                #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({})
     31                #In this example it returns nothing
     32                self.pluginInfo={}
     33                return(self.pluginInfo)
    2834
    29         def execute_action(self,action):
    30                 if action=='example':
    31                         self._exec_example()
    32                 self.progress=100
    33                 return self.example
     35        #storeManager calls this method when launchs an action.
     36        def execute_action(self,action,applist):
     37                #applist is a list of appinfo elements
     38                #This function must return a dict with the dicts 'status' and 'data'
     39                #Status stores the returning status, 0=succesful, !0=error
     40                #Data stores the resulting data of the operation
     41                self.progress=0
     42                self.result['status']={'status':-1,'msg':''}
     43                self.result['data']=''
     44                for app in applist:
     45                        if action=='example':
     46                                datalist.append(self._exec_example(app))
     47                self.result['data']=list(dataList)
     48                self.progress=100 #When all actions are launched we must assure that progress=100.
     49                return(self.result)
    3450
    3551        def _callback(self):
    3652                self.progress=self.progress+1
    3753
    38 # <---- Put your code ----> #
     54#End of needed functions-------->
    3955
    40         def _exec_example(self):
    41                 self.example="Example executed"
     56# Put your code ----> #
     57
     58        def _exec_example(self,app):
    4259                while (self.progress<100):
    4360                        self._callback()
     61                return(app)
     62
     63# <---- #
  • lliurex-store/trunk/fuentes/python3-lliurex-store.install/usr/share/lliurexstore/plugins/infoManager.py

    r4935 r5133  
    153153                                        appInfo['video']=appInfo['video'].replace('watch?v=','embed/')
    154154                        for bundle in app.get_bundles():
     155                                print(bundle)
    155156                                if bundle.get_kind()==0:
    156                                         appInfo['installerUrl']=bundle.get_id()
     157                                        print(bundle.get_kind())
     158                                #F***g appstream returns unknown for all the possible types
     159                                        if bundle.get_id().endswith('AppImage'):
     160                                                appInfo['appImage']=bundle.get_id()
     161                                                appInfo['description']='This is an appImage bundle. It comes from 3rd party providers and hasn\'t be tested by our devs. Please use it carefully\n'+app.get_description(localeItem)
     162                                        else:
     163                                                appInfo['installerUrl']=bundle.get_id()
     164                                if bundle.get_kind()==6:
     165                                        appInfo['appImage']=bundle.get_id()
    157166                        applistInfo.append(appInfo)
    158167                        self._callback_progress()
     
    182191                'extraInfo':'',\
    183192                'size':'',\
     193                'appImage':'',\
    184194                }
    185195                return(appInfo)
  • lliurex-store/trunk/fuentes/python3-lliurex-store.install/usr/share/lliurexstore/plugins/loadStore.py

    r4962 r5133  
    3131        #def register
    3232
    33         def execute_action(self,action):
     33        def execute_action(self,action,store=None,loadBundles=False):
    3434                self.progress=0
    35                 self.store=appstream.Store()
     35                if store:
     36                        self.store=store
     37                else:
     38                        self.store=appstream.Store()
    3639                if action=='load':
    37                         self._load_store(self.store)
     40                        self._load_store(self.store,loadBundles)
    3841                self.progress=100
    3942                return (self.store)
     
    4447        #def get_error
    4548
    46         def _load_store(self,store):
     49        def _load_store(self,store,loadBundles=False):
    4750                iconPath='/usr/share/icons/hicolor/128x128'
    4851                flags=[appstream.StoreLoadFlags.APP_INFO_SYSTEM,appstream.StoreLoadFlags.APP_INSTALL,appstream.StoreLoadFlags.APP_INFO_USER,appstream.StoreLoadFlags.DESKTOP,appstream.StoreLoadFlags.APPDATA,appstream.StoreLoadFlags.ALLOW_VETO]
     
    5558                                pass
    5659                store=self._sanitize_store(store)
     60                if loadBundles:
     61                        store=self.load_appImg_catalog(store)
    5762                self.store=store
    5863                return(store)
    5964        #def load_store
     65
     66        def load_appImg_catalog(self,store):
     67                iconPath='/usr/share/icons/hicolor/128x128'
     68                lliurex_dir="/home/juanma/svn/xenial/devtools/appImgdep11/dep11"
     69                if os.path.exists(lliurex_dir):
     70                        for lliurex in os.listdir(lliurex_dir):
     71                                storePath=Gio.File.new_for_path(lliurex_dir+'/'+lliurex)
     72                                self._debug("Adding file "+lliurex_dir+'/'+lliurex)
     73                                try:
     74                                        store.from_file(storePath,iconPath,None)
     75                                except Exception as e:
     76                                        self._debug("Couldn't add file "+lliurex+" to store")
     77                                        self._debug("Reason: "+str(e))
     78                return(store)
     79
     80        #def load_appImg_catalog(self)
    6081
    6182        def _parse_desktop(self,store): #DEPRECATED. Loads the apps from the available desktop files
     
    129150                                                store.remove_app(uniqDict[pkg]['app'])
    130151                        elif pkg:
    131                                 self._debug("Adding "+app.get_id_filename()+" to uniq dict")
     152#                               self._debug("Adding "+app.get_id_filename()+" to uniq dict")
    132153                                uniqDict.update({pkg:{'fn':app.get_id_filename(),'app':app}})
    133154                #Delete zomando-related debs
     
    146167                                if purgeApp:
    147168                                        if not purgeApp.has_category('Zomando'):
    148                                                 self._debug("Removed related zomando app "+str(purgeApp.get_categories()))
     169                                                self._debug("Removed related zomando app "+str(purgeApp.get_id()))
    149170                                                store.remove_app(purgeApp)
    150171                return(store)
     
    165186                                blFile=open('/usr/share/lliurex-store/files/blacklist.json').read()
    166187                                blacklist=json.loads(blFile)
     188                                blApps=[]
    167189                                if flavour in blacklist:
    168190                                        blApps=blacklist[flavour]
  • lliurex-store/trunk/fuentes/python3-lliurex-store.install/usr/share/lliurexstore/plugins/zmdManager.py

    r4962 r5133  
    4747                self.progress=0
    4848                self.result['status']={'status':-1,'msg':''}
    49 #               self.result['data']=list(applist)
    50                 self.result['data']=''
     49                self.result['data']=list(applist)
    5150                dataList=[]
    5251                if self.disabled:
     
    6059                                                if action=='install':
    6160                                                        dataList.append(self._install_Zmd(appInfo))
    62 #                                                       self.result['data'].append(self._install_Zmd(appInfo))
    6361                                                if action=='remove':
    6462                                                        dataList.append(self._remove_Zmd(appInfo))
    65 #                                                       self.result['data'].append(self._remove_Zmd(appInfo))
    6663                                                if action=='pkginfo':
    6764                                                        dataList.append(self._get_Zmd_Info(appInfo))
    68 #                                                       self.result['data'].append(self._get_Zmd_Info(appInfo))
     65                                self.result['data']=list(dataList)
    6966                        except:
    7067                                self.disabled=True
    7168                                self._set_status(10)
    72                 self.result['data']=list(dataList)
    7369                self.progress=100
    7470                return(self.result)
  • lliurex-store/trunk/fuentes/python3-lliurex-store.install/usr/share/lliurexstore/storeManager.py

    r4962 r5133  
    2828                                        'remove':['search','get_info','pkginfo','remove']
    2929                                        }
     30                self.loadBundles=False
    3031                self.dbg=0
    3132                if args:
     
    119120        ####
    120121        def execute_action(self,action,args=None):
    121                 self._debug("Launching action: "+action)
     122                self._debug("Launching action: "+action+" and args "+str(args))
    122123                if self.is_action_running('load'):
    123124                        self._join_action('load')
     
    186187
    187188                for action in actionList:
    188                         if action in self.threadsRunning:
     189                        if action in self.threadsRunning.keys():
    189190                                if self.threadsRunning[action].is_alive():
    190191                                        status=True
     
    326327                if action in self.result:
    327328                        result=self.result[action]['status']
    328                         errorFile=open('/usr/share/lliurex-store/files/error.json').read()
    329                         errorCodes=json.loads(errorFile)
    330                         errCode=str(result['status'])
    331                         if errCode in errorCodes:
    332                                 result['msg']=errorCodes[errCode]
    333                         else:
    334                                 result['msg']=u"Unknown error"
     329                        try:
     330                                errorFile=open('/usr/share/lliurex-store/files/error.json').read()
     331                                errorCodes=json.loads(errorFile)
     332                                errCode=str(result['status'])
     333                                if errCode in errorCodes:
     334                                        result['msg']=errorCodes[errCode]
     335                                else:
     336                                        result['msg']=u"Unknown error"
     337                        except:
     338                                        result['msg']=u"Unknown error"
    335339                self.lock.release()
    336340                return(result)
    337341        #def get_status
    338342
     343        def load_bundles(self):
     344                self.loadBundles=True
     345                self._load_Store()
     346
    339347        ####
    340348        #Loads the store
     
    343351                action='load'
    344352                loadFunction=self._execute_class_method(action)
    345                 self.store=loadFunction.execute_action(action)
     353                self.store=loadFunction.execute_action(action,self.store,self.loadBundles)
    346354        #def _load_Store
    347355
     
    394402                                result['data'].extend(pkgInfoFunction.execute_action(action,typeDict[package_type])['data'])
    395403                                result['status']=pkgInfoFunction.execute_action(action,typeDict[package_type])['status']
     404                        else:
     405                                result['data'].append(appInfo)
    396406                return(result)
    397407        #def _get_Extended_App_Info
     
    554564                        if appInfo['installerUrl']!='':
    555565                                return_msg="sh"
     566                        elif appInfo['appImage']!='':
     567                                return_msg="appimage"
    556568                        else:
    557569                                return_msg="deb"
Note: See TracChangeset for help on using the changeset viewer.