source: lliurex-store/trunk/fuentes/python3-lliurex-store.install/usr/share/lliurexstore/plugins/loadStore.py @ 3663

Last change on this file since 3663 was 3663, checked in by Juanma, 3 years ago

WIP on CLI

File size: 2.0 KB
Line 
1import os
2import gi
3from gi.repository import Gio
4gi.require_version('AppStreamGlib', '1.0')
5from gi.repository import AppStreamGlib as appstream
6import subprocess
7
8class loadstore:
9        def __init__(self):
10                self.dbg=0
11                self.pluginInfo={'load':'*'}
12                self.store=''
13                self.progress=0
14                self.error=0
15        #def __init__
16
17        def set_debug(self,dbg='1'):
18                self.dbg=int(dbg)
19                self._debug ("Debug enabled")
20        #def set_debug
21
22        def _debug(self,msg=''):
23                if self.dbg==1:
24                        print ('DEBUG Load: '+msg)
25        #def _debug
26
27        def register(self):
28                return(self.pluginInfo)
29        #def register
30
31        def execute_action(self,action):
32                self.store=appstream.Store()
33                if action=='load':
34                        self._load_store(self.store)
35                self.progress=100
36                return (self.store)
37        #def execute_action
38
39        def get_error(self):
40                return (self.error)
41
42        def _load_store(self,store):
43                iconPath='/usr/share/icons/hicolor/128x128'
44                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]
45                for flag in flags:
46                        try:
47                                self._debug("Loading "+str(flag))
48                                store.load(flag)
49                        except:
50                                print ("Failed to load"+str(flag))
51                                pass
52                store=self._sanitize_store(store)
53                self.store=store
54                return(store)
55        #def load_store
56
57        def _parse_desktop(self,store): #DEPRECATED
58                desktopDir='/usr/share/applications'
59                return(store)
60                applist=[]
61                for app in store.get_apps():
62                        if os.path.isfile(desktopDir+'/'+app.get_id()):
63                                try:
64                                        app.parse_file(desktopDir+'/'+desktop,appstream.AppParseFlags.APPEND_DATA)
65                                        store.add_app(app)
66                                except Exception as e:
67                                        pass
68#                               for veto in app.get_vetos():
69#                                       app.remove_veto(veto)
70#                                       store.add_app(app)
71                return(store)
72        #def _parse_desktop
73
74        def _sanitize_store(self,store):
75                apps_to_remove=[]
76                applist=store.get_apps()
77                for app in applist:
78                        if not app.get_pkgnames():
79                                store.remove_app(app)
80                #Check the blacklist
81#               flavour=subprocess.check_output(["lliurex-version","-f"]).rstrip()
82
83                return (store)
84        #def _sanitize_store
85
Note: See TracBrowser for help on using the repository browser.