Ignore:
Timestamp:
Feb 15, 2017, 6:27:03 PM (3 years ago)
Author:
Juanma
Message:

WIP on CLI

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

Legend:

Unmodified
Added
Removed
  • lliurex-store/trunk/fuentes/lliurex-appstore.install/usr/share/lliurex-store/lliurex-store-cli.py

    r3277 r3646  
    1111                printed=False
    1212                results=store.get_result(action)
    13                 print(store.get_progress())
     13                print ("")
    1414                for action in results:
    1515                        if action in actions and not actionList[action]:
    16                                 print("")
    17                                 print ("#####################")
    18                                 print ("RESULT FOR "+action+ " executed in " + str((time.time() - start_time)))
    19                                 print(store.get_progress())
     16                                print (u"Results for "+action)
    2017                                for result in results[action]:
    21                                         print(result)
    22                                         print ("---------------")
     18                                        if action=='search':
     19                                                if args.info:
     20                                                        try:
     21                                                                print(u'Package: '+result['package'])
     22                                                                print(u'Version: '+result['version'])
     23                                                                print(u'Categories: '+','.join(result['categories']))
     24                                                                print(u'Status: '+result['status'])
     25                                                                print(u'Summary: '+result['summary'])
     26                                                                print(u'Description: '+result['description'])
     27                                                                pkgString=[]
     28                                                                for dependency in result['depends']:
     29                                                                                pkgName=dependency.split(';')[0]
     30                                                                                pkgString.append(pkgName)
     31                                                                print(u'Depends: '+' '+','.join(pkgString))
     32                                                                print("")
     33                                                        except:
     34                                                                pass
     35                                                else:
     36                                                        #Only print name and summary
     37                                                        print(result['package']+": "+result['summary'])
     38                                        elif action=='list':
     39                                                #Print package, summary and status
     40                                                try:
     41                                                        if result['package']:
     42                                                                package=result['package']
     43                                                        else:
     44                                                                package=result['name']
     45                                                        print(package+": "+result['summary']+' ('+','.join(result['categories'])+')'+' ('+result['status']+')')
     46                                                except:
     47                                                        pass
     48                                        elif action=='install':
     49                                                for app in result:
     50                                                                        print(app+' '+result[app])
     51                                        else:
     52                                                        print(result)
    2353                                printed=True
    24                         if printed:
    25                                 print ("####################")
     54#                               print ("---------------")
     55#                       if printed:
     56#                               print ("####################")
    2657                return(printed)
     58        #def print_results
    2759
    2860        CURSOR_UP='\033[F'
     
    3062        actions=[]
    3163        parms={}
    32         store=storeManager.StoreManager()
    3364        args=process_Args(sys.argv)
     65        store=storeManager.StoreManager(args.debug)
    3466
    35         if args.debug:
    36                 actions.append('debug')
    37                 store.set_debug(args.debug)
    38                 parms['debug']=args.debug
    39         if args.search:
     67        '''     if args.debug:
     68                        actions.append('debug')
     69                        store.set_debug(args.debug)
     70                        parms['debug']=args.debug'''
     71        if (args.search or args.info):
    4072                actions.append('search')
     73                if args.info:
     74                                args.search=args.info
    4175                parms['search']=args.search
    4276        if args.install:
     
    5690        start_time=time.time()
    5791        for action in actions:
    58                 print("Launching: "+action)
     92#               print(u"Launching: "+action)
    5993                store.execute_action(action,parms[action])
    6094                actionList[action]=False
    6195               
    62         print ("All actions launched: " +str(actions))
     96#       print ("All actions launched: " +str(actions))
    6397        while store.is_action_running():
    64                 #               print("                                                                                                               ",end="\r")
    65                 print (CURSOR_UP + ERASE_LINE)
    66                 print(store.get_progress(),end="\r")
     98                progressDic=store.get_progress()
     99                progressArray=[]
     100                for progress in progressDic:
     101                        if progress!='load':
     102                                progressArray.append(progress+': '+str(int(progressDic[progress]))+'%')
     103                print(','.join(progressArray),end="\r")
    67104                time.sleep(0.1)
    68105                for key in actionList:
     
    70107                        if key in progressDic:
    71108                                if progressDic[key]==100 and not actionList[key]:
     109                                        progressDic=store.get_progress(key)
     110                                        progressArray=[]
     111                                        for progress in progressDic:
     112                                                if progress!='load':
     113                                                        progressArray.append(progress+': '+str(progressDic[progress])+'%')
     114                                        print(','.join(progressArray))
     115                                        print (CURSOR_UP + ERASE_LINE)
    72116                                        actionList[key]=print_results(key)
    73117        print_results()
    74 
    75118
    76119def process_Args(args):
     
    79122        parser.add_argument('--list-sections',action='store_true',help=(u"List all sections from the store"))
    80123        parser.add_argument('--search',metavar='Name',nargs='?',help=(u"Search a package"))
     124        parser.add_argument('--info',metavar='Name',nargs='?',help=(u"Show all info from a package"))
    81125        parser.add_argument('--install',metavar='Package',help=(u"Install a package"))
    82126        parser.add_argument('--remove',metavar='Package',help=(u"Remove a package"))
  • lliurex-store/trunk/fuentes/python3-lliurex-store.install/usr/share/lliurexstore/plugins/debManager.py

    r3275 r3646  
    2323        def _debug(self,msg=''):
    2424                if self.dbg==1:
    25                         print ('DEBUG Deb: '+msg)
     25                        print ('DEBUG Deb: '+str(msg))
    2626        #def debug
    2727
     
    6060                self.partialProgress=status.get_property('percentage')
    6161                self.progress=self.partialProgress/self.count
    62                 self._debug("Progress"+str(self.partialProgress))
     62#               self._debug("Progress"+str(self.partialProgress))
    6363        #def _callback
    6464
     
    6767                self._debug("Installing "+app.get_id())
    6868                try:
    69                         self.installer.install_packages(False,[app.get_id(),],None,self._callback,None)
    70                         self.result.append({app.get_id():" installed succesfully"})
     69                        self.installer.install_packages(True,[app.get_id(),],None,self._callback,None)
     70                        self.result.append({app.get_id():0})
    7171                except Exception as e:
    72                         self._debug(e.message)
    73                         self.result.append({app.get_id():e.message})
     72                        self._debug("Install error: "+str(e.code))
     73                        self.result.append({app.get_id():e.code})
    7474                self.partialProgress=100
    7575        #def _install_App_from_Repo
     
    7777        def _remove_App(self,app):
    7878                try:
    79                         self.installer.remove_packages(False,[app.get_id(),],True,False,None,self._callback,None)
    80                         self.result.append({app.get_id():" removed succesfully"})
     79                        self.installer.remove_packages(True,[app.get_id(),],True,False,None,self._callback,None)
     80                        self.result.append({app.get_id():0})
    8181                except Exception as e:
    82                         self._debug(e.message)
    83                         self.result.append({app.get_id():e.message})
     82                        self._debug("Remove error: " +str(e.code))
     83                        self.result.append({app.get_id():e.code})
    8484                self.partialProgress=100
    8585        #def _remove_App
  • lliurex-store/trunk/fuentes/python3-lliurex-store.install/usr/share/lliurexstore/plugins/infoManager.py

    r3275 r3646  
    8282                                        break
    8383                        if app.get_categories():
    84                                 appInfo['categories']=str(app.get_categories())
     84                                appInfo['categories']=app.get_categories()
    8585                        if app.get_icon_default():
    8686                                appInfo['icon']=app.get_icon_default().get_name()
  • lliurex-store/trunk/fuentes/python3-lliurex-store.install/usr/share/lliurexstore/plugins/loadStore.py

    r3275 r3646  
    1111                self.store=''
    1212                self.progress=0
     13                self.error=0
    1314        #def __init__
    1415
     
    3435                return (self.store)
    3536        #def execute_action
     37
     38        def get_error(self)
     39                return (self.error)
    3640
    3741        def _load_store(self,store):
  • lliurex-store/trunk/fuentes/python3-lliurex-store.install/usr/share/lliurexstore/plugins/searchManager.py

    r3275 r3646  
    7878                                        catDict[cat]=catDict[cat]+1
    7979                for section in catDict:
    80                         applist.append({section:catDict[section]})
     80                        applist.append({str(section):catDict[section]})
    8181                self.applist=applist
    8282                return(applist)
     
    100100                                                pass
    101101                                        setAppCategories=set(appCategories)
    102                                         if list(setCategories.intersection(setAppCategories)):
     102                                        if setCategories.issubset(setAppCategories):
    103103                                                self._debug("Found "+app.get_id())
    104104                                                applist.append(app)
  • lliurex-store/trunk/fuentes/python3-lliurex-store.install/usr/share/lliurexstore/storeManager.py

    r3615 r3646  
    2727                                        }
    2828                self.dbg=0
     29                if args:
     30                        self.dbg=args
    2931                self.threads={}                         #Dict that stores the functions that must execute each action
    3032                self.threadsProgress={}                 #"" "" "" the progress for each launched thread
    3133                self.threadsRunning={}                  #"" "" "" the running threads
    32                 self._define_functions_for_threads()    #Function that loads the dictionary self.threads
    3334                self.registeredPlugins={}               #Dict that have the relation between plugins and actions
    3435                self.registerProcessProgress={}         #Dict that stores the progress for each function/parentAction pair
    35                 self.__init_plugins__()                 #Function that loads the plugins
    3636                self.progressActions={}                 #Progress of global actions based on average progress of individual processes
    3737                self.result={}                          #Result of the actions
    38                 self.execute_action('load')             #Function that launches the actions
    3938                self.lock=threading.Lock()              #locker for functions related to threads (get_progress, is_action_running...)
    40 #               self.log
     39                self.main()
    4140        #def __init__
     41
     42        def main(self):
     43                self._define_functions_for_threads()    #Function that loads the dictionary self.threads
     44                self.__init_plugins__()                 #Function that loads the plugins
     45                self.execute_action('load')             #Initial load of the store
     46        #def main
    4247
    4348        ####
     
    148153                if action in self.registeredPlugins:
    149154                        self._debug("Plugin for "+action+": "+self.registeredPlugins[action][parms])
    150 #                       exeFunction=eval(self.pluginMod+'.'+self.registeredPlugins[action][parms]+"()")
    151155                        exeFunction=eval(self.registeredPlugins[action][parms]+"()")
     156                        if self.dbg:
     157                                exeFunction.set_debug(1)
    152158                        self._registerProcessProgress(action,exeFunction,launchedby)
    153159                else:
     
    211217        def _registerProcessProgress(self,action,function,parentAction=None):
    212218                if action in self.registerProcessProgress.keys():
    213                         self._debug("Appended process for action :"+action +" and function: "+str(function))
     219                        self._debug("Appended process for action: "+action +" and function: "+str(function))
    214220                        self.registerProcessProgress[action].append(function)
    215221                else:
    216                         self._debug("Registered process for action :"+action+" and function: "+str(function))
     222                        self._debug("Registered process for action: "+action+" and function: "+str(function))
    217223                        self.registerProcessProgress[action]=[function]
    218224                if parentAction:
     
    370376                if action=='list_sections':
    371377                        searchItem=''
    372                 if (searchItem in self.registeredPlugins[action]):
    373                         self._debug("Plugin for search "+ searchItem +": "+self.registeredPlugins[action][searchItem])
    374                         finder=self.registeredPlugins[action][searchItem]
    375                 else:
    376                         self._debug("Plugin for generic search: "+self.registeredPlugins[action]['*'])
    377                         finder=self.registeredPlugins[action][('*')]
    378                 searchFunction=eval(finder+"()")
    379378                if not launchedby:
    380379                        launchedby=action
    381                 self._registerProcessProgress(action,searchFunction,launchedby)
     380
     381                searchFunction=self._execute_class_method(action,'*',launchedby)
    382382                aux_applist=searchFunction.execute_action(self.store,action,searchItem)
    383                 #1.- Get appstream metadata (faster)
    384                 partialAction='info'
    385                 applist=self._get_App_Info(aux_applist,launchedby)
    386                 self._debug("Add result for "+partialAction)
    387                 self.result[partialAction]=applist
    388                 #2.- Get rest of metadata (slower)
    389                 partialAction='pkginfo'
    390                 applist=self._get_Extended_App_Info(applist,launchedby,fullsearch)
    391                 realAction=action
    392                 if launchedby:
    393                         realAction=launchedby
    394                         self._debug("Assigned results of "+action+" to "+realAction)
    395                 if (len(applist)):
    396                         self.result[realAction]=applist
    397                         return_msg=True
    398                 else:
    399                         notfound=''
    400                         for item in searchItem:
    401                                 notfound=' '.join(searchItem)
    402                         self.result[realAction]=[{notfound:" not found"}]
     383                if len(aux_applist):
     384                        #1.- Get appstream metadata (faster)
     385                        partialAction='info'
     386                        applist=self._get_App_Info(aux_applist,launchedby)
     387                        self._debug("Add result for "+partialAction)
     388                        self.result[partialAction]=applist
     389                        #2.- Get rest of metadata (slower)
     390                        partialAction='pkginfo'
     391                        applist=self._get_Extended_App_Info(applist,launchedby,fullsearch)
     392                        realAction=action
     393                        if launchedby:
     394                                realAction=launchedby
     395                                self._debug("Assigned results of "+action+" to "+realAction)
     396                        if (len(applist)):
     397                                self.result[realAction]=applist
     398                                return_msg=True
     399                        else:
     400                                notfound=''
     401                                self.result[realAction]=[{searchItem:2}]
     402                                return_msg=False
     403                else:
     404                        self.result[launchedby]=[{searchItem:1}]
    403405                        return_msg=False
    404406                return(return_msg)
     
    424426                                if (action=='install' and appInfo['status']=='installed') or (action=='remove' and appInfo['status']=='available'):
    425427                                        if action=='remove':
    426                                                 self.result[action]=[{appInfo['package']:"Package not installed"}]
     428                                                self.result[action]=[{appInfo['package']:3}]
    427429                                        else:
    428                                                 self.result[action]=[{appInfo['package']:"Package already installed"}]
     430                                                self.result[action]=[{appInfo['package']:4}]
    429431                                        return_msg=False
    430432                                        typeDict={}
Note: See TracChangeset for help on using the changeset viewer.