Ignore:
Timestamp:
Oct 23, 2018, 2:24:29 PM (11 months ago)
Author:
Juanma
Message:

cli improvements

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

Legend:

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

    r7471 r8182  
    11#!/usr/bin/python3
    2 import sys
     2import sys,os,signal
    33import argparse
    44#sys.path.append('/usr/share/lliurex-store')
     
    88import html2text
    99import gettext
     10import threading
    1011gettext.textdomain('python3-lliurex-store')
    1112_=gettext.gettext
     
    2324   END = '\033[0m'
    2425
     26def signal_handler(*args):
     27        if args[0]==17:
     28                return
     29        os.system('setterm -cursor on')
     30        sys.exit(0)
     31       
     32
    2533def main():
    2634        def print_results(action=None):
     
    2836                results=store.get_result(action)
    2937                status=store.get_status(action)
    30                 print("ST: %s"%status)
    3138                if not 'status' in status.keys():
    3239                        status['status']=1
     
    7279                                                elif action=='search':
    7380                                                        #Only print name and summary
     81                                                        data_id=''
    7482                                                        printcolor=color.DARKCYAN
    75                                                         data_id=''
    76                                                         if data['bundle']!='':
     83                                                        if data['bundle']:
    7784                                                                printcolor=color.PURPLE
    7885                                                        elif (data['package'] not in data['id'] or data['package'] in processed):
     
    98105                                                                pass
    99106                                                elif action=='install':
    100                                                                 print(data['package']+" "+ _(u"installed")+" "+color.BOLD+ _(u"succesfully")+color.END)
     107                                                                print(color.DARKCYAN+data['package']+color.END+" "+ _(u"installed")+" "+color.BOLD+ _(u"succesfully")+color.END)
    101108                                                elif action=='remove':
    102                                                                 print(data['package']+" "+ _(u"removed")+" "+color.BOLD+ _(u"succesfully")+color.END)
     109                                                                print(color.DARKCYAN+data['package']+color.END+" "+ _(u"removed")+" "+color.BOLD+ _(u"succesfully")+color.END)
    103110                                                else:
    104111                                                        print("RESULT:\n%s"%data)
     
    145152#               actions.append('random')
    146153#               parms['random']=args.random
    147 #       if args.list:
    148 #               actions.append('list')
    149 #               parms['list']=args.list
     154        if args.list:
     155                actions.append('list')
     156                parms['list']=args.list
    150157
    151158        actionList={'search':False,'info':False,'pkgInfo':False,'install':False,'remove':False,'list':False,'list-sections':False,'random':False}
     
    153160        store=storeManager.StoreManager(appimage=appimage,snap=snap,dbg=dbg,cli=True)
    154161        for action in actions:
    155                 store.execute_action(action,parms[action])
     162                th=threading.Thread(target=store.execute_action, args = (action,parms[action]))
     163                th.start()
    156164                actionList[action]=False
    157165               
     166        inc=0
     167        banner=' '.join(actions)
     168        banner='LliureX Store'
     169        numchar=len(banner)
     170        os.system('setterm -cursor off')
    158171        while store.is_action_running():
    159                 progressDic=store.get_progress()
    160                 progressArray=[]
    161                 for progress in progressDic:
    162                         if progress!='load':
    163                                 progressArray.append(_(progress)+': '+str(int(progressDic[progress]))+'%')
    164                 print(','.join(progressArray),end="\r")
    165                 time.sleep(0.1)
    166                 for key in actionList:
    167                         progressDic=store.get_progress(key)
    168                         if key in progressDic:
     172                ini=banner[0:numchar]
     173                end=banner[numchar:inc]
     174                text=ini+' '+end
     175                print(text+'                 ',end='\r')
     176                numchar-=1
     177                inc+=1
     178                time.sleep(0.2)
     179                if numchar<0:
     180                        numchar=len(banner)
     181                        inc=0
     182        print("")
     183        print (CURSOR_UP + ERASE_LINE)
     184        for key in actionList:
     185                progressDic=store.get_progress(key)
     186                if key in progressDic:
    169187                                if progressDic[key]==100 and not actionList[key]:
    170                                         progressDic=store.get_progress(key)
    171                                         progressArray=[]
    172                                         for progress in progressDic:
    173                                                 if progress!='load':
    174                                                         progressArray.append(_(progress)+': '+str(progressDic[progress])+'%')
    175                                         print(','.join(progressArray))
    176                                         print (CURSOR_UP + ERASE_LINE)
    177188                                        actionList[key]=print_results(key)
    178 #       print_results('random')
     189        print_results()
     190        os.system('setterm -cursor on')
    179191
    180192def process_Args(args):
     
    188200        parser.add_argument('--appimage',action='store_true',help=(_(u"Load appimage catalog")))
    189201        parser.add_argument('--snap',action='store_true',help=(_(u"Load snap catalog")))
    190 #       parser.add_argument('--list',metavar='list',nargs='?',help=(_(u"List category")))
     202        parser.add_argument('--list',metavar='list',nargs='?',help=(_(u"List category")))
    191203
    192204        args=parser.parse_args()
    193205        return args
    194206
     207#Cause the cli hides the cursor we must assure that the cursor is showing when the program ends
     208sigs=set(signal.Signals) - {signal.SIGKILL, signal.SIGSTOP}
     209for sig in sigs:
     210        signal.signal(sig,signal_handler)
    195211main()
  • lliurex-store/trunk/fuentes/python3-lliurex-store.install/usr/share/lliurexstore/plugins/searchManager.py

    r8139 r8182  
    130130                        categories_set=set(tokens)
    131131                        apps_in_store=self.store.get_apps()
    132                         if max_results:
    133                                 apps_in_store=apps_in_store[0:max_results]
    134132                        count_apps=len(apps_in_store)
    135133                        self.progress=0
     
    146144                                                self._debug("Found "+app.get_id())
    147145                                                applist.append(app)
     146                                                if max_results and len(applist)==max_results:
     147                                                        break
    148148                else:
    149149                        self._debug("Loading all apps in store")
     
    165165#                       for app in applist:
    166166#                               self._debug("Added "+app.get_id())
    167 #               if max_results:
    168 #                       applist=applist[0:max_results]
     167                        if max_results:
     168                                applist=applist[0:max_results]
    169169                #List only valid categories
    170170
  • lliurex-store/trunk/fuentes/python3-lliurex-store.install/usr/share/lliurexstore/storeManager.py

    r8084 r8182  
    227227                        exe_function=eval(self.plugins_registered[action][package_type]+"("+','.join(args)+")")
    228228                        if self._propagate_dbg:
    229                                 exe_function.set_debug()
     229                                exe_function.set_debug(self.dbg)
    230230                        if self.plugins_registered[action][package_type] in self.cli_mode:
    231231                                exe_function.cli_mode=True
Note: See TracChangeset for help on using the changeset viewer.