cli colorize
This commit is contained in:
parent
6a81cdd89a
commit
c357185582
53
impra/cli.py
53
impra/cli.py
|
@ -156,6 +156,7 @@ data command Examples:
|
||||||
|
|
||||||
gpData = OptionGroup(parser, '\n------------------------------------\ndata related Options (command data)')
|
gpData = OptionGroup(parser, '\n------------------------------------\ndata related Options (command data)')
|
||||||
gpConf = OptionGroup(parser, '\n------------------------------------\nconf related Options (command conf)')
|
gpConf = OptionGroup(parser, '\n------------------------------------\nconf related Options (command conf)')
|
||||||
|
|
||||||
|
|
||||||
# metavar='<ARG1> <ARG2>', nargs=2
|
# metavar='<ARG1> <ARG2>', nargs=2
|
||||||
parser.add_option('-v', '--version' , help='show program\'s version number and exit' , action='store_true' , default=False)
|
parser.add_option('-v', '--version' , help='show program\'s version number and exit' , action='store_true' , default=False)
|
||||||
|
@ -163,26 +164,27 @@ data command Examples:
|
||||||
parser.add_option('-d', '--debug' , help='set debug mode' , action='store_true' , default=False)
|
parser.add_option('-d', '--debug' , help='set debug mode' , action='store_true' , default=False)
|
||||||
|
|
||||||
gpData.add_option('-l', '--list' , help='list index on imap server' , action='store_true' )
|
gpData.add_option('-l', '--list' , help='list index on imap server' , action='store_true' )
|
||||||
gpData.add_option('-a', '--add' , help='add file FILE with specified LABEL on server' , action='store', metavar='FILE LABEL ', nargs=2)
|
gpData.add_option('-a', '--add' , help='add file FILE with specified LABEL on server' , action='store', metavar='FILE LABEL ', nargs=2)
|
||||||
gpData.add_option('-g', '--get' , help='get file with specified ID from server' , action='store', metavar='ID ')
|
gpData.add_option('-g', '--get' , help='get file with specified ID from server' , action='store', metavar='ID ')
|
||||||
gpData.add_option('-s', '--search' , help='search file with specified PATTERN' , action='store', metavar='PATTERN ')
|
gpData.add_option('-s', '--search' , help='search file with specified PATTERN' , action='store', metavar='PATTERN ')
|
||||||
gpData.add_option('-r', '--remove' , help='remove FILE with specified ID from server' , action='store', metavar='ID ')
|
gpData.add_option('-r', '--remove' , help='remove FILE with specified ID from server' , action='store', metavar='ID ')
|
||||||
gpData.add_option('-c', '--category' , help='set specified CATEGORY (crit. for opt. -l,-a or -s)' , action='store', metavar='CATG ' , default='')
|
gpData.add_option('-c', '--category' , help='set specified CATEGORY (crit. for opt. -l,-a or -s)' , action='store', metavar='CATG ' , default='')
|
||||||
gpData.add_option('-u', '--user' , help='set specified USER (crit. for opt. -l,-a or -s)' , action='store', metavar='OWNER ' , default='all')
|
gpData.add_option('-u', '--user' , help='set specified USER (crit. for opt. -l,-a or -s)' , action='store', metavar='OWNER ' , default='all')
|
||||||
gpData.add_option('-o', '--order' , help='set colon ORDER (crit. for opt. -l and -s)' , action='store', metavar='ORDER ' , default='ID')
|
gpData.add_option('-o', '--order' , help='set colon ORDER (crit. for opt. -l and -s)' , action='store', metavar='ORDER ' , default='ID')
|
||||||
|
gpData.add_option('-O', '--order-inv' , help='set colon ORDER_INVERSE (crit. for opt. -l and -s)' , action='store', metavar='ORDER_INVERSE')
|
||||||
#gpData.add_option('-o', '--output-dir' , help='set specified OUTPUT DIR (for opt. -l,-a,-d or -g)' , action='store', metavar='DIR ')
|
#gpData.add_option('-o', '--output-dir' , help='set specified OUTPUT DIR (for opt. -l,-a,-d or -g)' , action='store', metavar='DIR ')
|
||||||
parser.add_option_group(gpData)
|
parser.add_option_group(gpData)
|
||||||
|
|
||||||
gpConf.add_option('-L', '--list-conf' , help='list configuration' , action='store_true', default=False)
|
gpConf.add_option('-L', '--list-conf' , help='list configuration' , action='store_true', default=False)
|
||||||
gpConf.add_option('-D', '--load-conf' , help='load configuration' , action='store_true', default=False)
|
gpConf.add_option('-D', '--load-conf' , help='load configuration' , action='store_true', default=False)
|
||||||
gpConf.add_option('-H', '--set-host' , help='set imap host server' , action='store', metavar='HOST ')
|
gpConf.add_option('-H', '--set-host' , help='set imap host server' , action='store', metavar='HOST ')
|
||||||
gpConf.add_option('-U', '--set-user' , help='set imap user login' , action='store', metavar='USER ')
|
gpConf.add_option('-U', '--set-user' , help='set imap user login' , action='store', metavar='USER ')
|
||||||
gpConf.add_option('-X', '--set-pass' , help='set imap user password' , action='store', metavar='PASS ')
|
gpConf.add_option('-X', '--set-pass' , help='set imap user password' , action='store', metavar='PASS ')
|
||||||
gpConf.add_option('-P', '--set-port' , help='set imap port' , action='store', metavar='PORT ')
|
gpConf.add_option('-P', '--set-port' , help='set imap port' , action='store', metavar='PORT ')
|
||||||
gpConf.add_option('-N', '--set-name' , help='set user name' , action='store', metavar='NAME ')
|
gpConf.add_option('-N', '--set-name' , help='set user name' , action='store', metavar='NAME ')
|
||||||
gpConf.add_option('-B', '--set-boxn' , help='set boxName on imap server (default:[%default])' , action='store', metavar='BOXNAME ')
|
gpConf.add_option('-B', '--set-boxn' , help='set boxName on imap server (default:[%default])' , action='store', metavar='BOXNAME ')
|
||||||
gpConf.add_option('-K', '--gen-keys' , help='generate new key' , action='store_true', default=False)
|
gpConf.add_option('-K', '--gen-keys' , help='generate new key' , action='store_true', default=False)
|
||||||
gpConf.add_option('-A', '--active-profile', help='set active profile' , action='store', metavar='PROFILE ')
|
gpConf.add_option('-A', '--active-profile', help='set active profile' , action='store', metavar='PROFILE ')
|
||||||
|
|
||||||
parser.add_option_group(gpConf)
|
parser.add_option_group(gpConf)
|
||||||
|
|
||||||
|
@ -337,7 +339,11 @@ data command Examples:
|
||||||
printHeaderPart('box',impst.rootBox)
|
printHeaderPart('box',impst.rootBox)
|
||||||
Clz.print(date, Clz.fgB7, True, True)
|
Clz.print(date, Clz.fgB7, True, True)
|
||||||
printLineSep(LINE_SEP_CHAR,LINE_SEP_LEN)
|
printLineSep(LINE_SEP_CHAR,LINE_SEP_LEN)
|
||||||
impst.index.print(o.order)
|
|
||||||
|
order = o.order
|
||||||
|
if o.order_inv is not None:
|
||||||
|
order = '-'+o.order_inv
|
||||||
|
impst.index.print(order)
|
||||||
|
|
||||||
elif o.add :
|
elif o.add :
|
||||||
done = impst.addFile(o.add[0],o.add[1],o.user,o.category)
|
done = impst.addFile(o.add[0],o.add[1],o.user,o.category)
|
||||||
|
@ -368,15 +374,28 @@ data command Examples:
|
||||||
print()
|
print()
|
||||||
|
|
||||||
elif o.search :
|
elif o.search :
|
||||||
|
uid = conf.get('uid' ,'index')
|
||||||
|
date = conf.get('date','index')
|
||||||
|
account = conf.get('user','imap')
|
||||||
matchIds = impst.index.getByPattern(o.search)
|
matchIds = impst.index.getByPattern(o.search)
|
||||||
if matchIds is not None:
|
core.clear()
|
||||||
|
if matchIds is not None:
|
||||||
printLineSep(LINE_SEP_CHAR,LINE_SEP_LEN)
|
printLineSep(LINE_SEP_CHAR,LINE_SEP_LEN)
|
||||||
printHeaderTitle('SEARCH')
|
printHeaderTitle(APP_TITLE)
|
||||||
|
printHeaderPart('account',account)
|
||||||
|
printHeaderPart('index',uid)
|
||||||
|
printHeaderPart('box',impst.rootBox)
|
||||||
|
Clz.print(date, Clz.fgB7, True, True)
|
||||||
|
printLineSep(LINE_SEP_CHAR,LINE_SEP_LEN)
|
||||||
|
Clz.print(' searching --' , Clz.fgB3, False)
|
||||||
Clz.print(' `'+o.search+'`' , Clz.fgB7, False)
|
Clz.print(' `'+o.search+'`' , Clz.fgB7, False)
|
||||||
Clz.print(' -- found ' , Clz.fgB3, False)
|
Clz.print(' -- found ' , Clz.fgB3, False)
|
||||||
Clz.print(str(len(matchIds)), Clz.fgB1, False)
|
Clz.print(str(len(matchIds)), Clz.fgB1, False)
|
||||||
Clz.print(' results --' , Clz.fgB3)
|
Clz.print(' results --' , Clz.fgB3)
|
||||||
printLineSep(LINE_SEP_CHAR,LINE_SEP_LEN)
|
printLineSep(LINE_SEP_CHAR,LINE_SEP_LEN)
|
||||||
|
order = o.order
|
||||||
|
if o.order_inv is not None:
|
||||||
|
order = '-'+o.order_inv
|
||||||
impst.index.print(o.order,matchIds)
|
impst.index.print(o.order,matchIds)
|
||||||
else:
|
else:
|
||||||
print('\n ',end='')
|
print('\n ',end='')
|
||||||
|
|
|
@ -135,6 +135,9 @@ class FSplitter :
|
||||||
Clz.print('-'+str(uid) , Clz.fgB1, False)
|
Clz.print('-'+str(uid) , Clz.fgB1, False)
|
||||||
Clz.print(ext , Clz.fgB2)
|
Clz.print(ext , Clz.fgB2)
|
||||||
filePath += '-'+str(uid)
|
filePath += '-'+str(uid)
|
||||||
|
else :
|
||||||
|
Clz.print('\n deploying file as :' , Clz.fgn7)
|
||||||
|
Clz.print(' '+basename(filePath)+ext , Clz.fgB2, False)
|
||||||
filePath += ext
|
filePath += ext
|
||||||
|
|
||||||
fp = open(filePath, 'wb+')
|
fp = open(filePath, 'wb+')
|
||||||
|
@ -403,6 +406,8 @@ class ImpraIndex:
|
||||||
"""Print index content as formated bloc"""
|
"""Print index content as formated bloc"""
|
||||||
#clear()
|
#clear()
|
||||||
from impra.cli import printLineSep, LINE_SEP_LEN, LINE_SEP_CHAR
|
from impra.cli import printLineSep, LINE_SEP_LEN, LINE_SEP_CHAR
|
||||||
|
inv = order.startswith('-')
|
||||||
|
if inv : order = order[1:]
|
||||||
orderIndex = self.COLS.index(order)
|
orderIndex = self.COLS.index(order)
|
||||||
if orderIndex is None : orderIndex = self.COLS.index('ID')
|
if orderIndex is None : orderIndex = self.COLS.index('ID')
|
||||||
|
|
||||||
|
@ -416,7 +421,7 @@ class ImpraIndex:
|
||||||
Clz.print('CATEGORY'+' '*22, Clz.BG4+Clz.fgB7)
|
Clz.print('CATEGORY'+' '*22, Clz.BG4+Clz.fgB7)
|
||||||
printLineSep(LINE_SEP_CHAR,LINE_SEP_LEN)
|
printLineSep(LINE_SEP_CHAR,LINE_SEP_LEN)
|
||||||
|
|
||||||
d = sorted([(self.dic.get(k),k) for i, k in enumerate(self.dic) if not k.startswith(self.SEP_KEY_INTERN)], key=lambda lst:lst[0][orderIndex])
|
d = sorted([(self.dic.get(k),k) for i, k in enumerate(self.dic) if not k.startswith(self.SEP_KEY_INTERN)], reverse=inv, key=lambda lst:lst[0][orderIndex])
|
||||||
a = ''
|
a = ''
|
||||||
for v,k in d :
|
for v,k in d :
|
||||||
if matchIds==None or v[self.UID] in matchIds:
|
if matchIds==None or v[self.UID] in matchIds:
|
||||||
|
@ -541,7 +546,11 @@ class ImpraStorage:
|
||||||
rt = RuTime(eval(__CALLER__()),DEBUG_INFO)
|
rt = RuTime(eval(__CALLER__()),DEBUG_INFO)
|
||||||
if self.idx != None :
|
if self.idx != None :
|
||||||
self.ih.delete(self.idx, True)
|
self.ih.delete(self.idx, True)
|
||||||
for i in self.delids : self.ih.delete(i, True)
|
if len(self.delids) > 0 :
|
||||||
|
for i in self.delids : self.ih.delete(i, True, False)
|
||||||
|
Clz.print('\n expunge, waiting server...\n', Clz.fgB1)
|
||||||
|
self.srv.expunge()
|
||||||
|
sleep(2)
|
||||||
encData = self.index.encrypt()
|
encData = self.index.encrypt()
|
||||||
msgIndex = self.mb.buildIndex(encData)
|
msgIndex = self.mb.buildIndex(encData)
|
||||||
if DEBUG and DEBUG_LEVEL <= DEBUG_NOTICE : print(msgIndex.as_string())
|
if DEBUG and DEBUG_LEVEL <= DEBUG_NOTICE : print(msgIndex.as_string())
|
||||||
|
@ -692,10 +701,13 @@ class ImpraStorage:
|
||||||
rt = RuTime(eval(__CALLER__('"[%i] %s"' % (row[ImpraIndex.UID],row[ImpraIndex.LABEL]))),DEBUG_INFO)
|
rt = RuTime(eval(__CALLER__('"[%i] %s"' % (row[ImpraIndex.UID],row[ImpraIndex.LABEL]))),DEBUG_INFO)
|
||||||
ck = ConfigKey(row[ImpraIndex.HASH])
|
ck = ConfigKey(row[ImpraIndex.HASH])
|
||||||
hlst = ck.getHashList(key,row[ImpraIndex.PARTS],True)
|
hlst = ck.getHashList(key,row[ImpraIndex.PARTS],True)
|
||||||
Clz.print(' waiting srv...', Clz.fgn7)
|
Clz.print(' get file list from server', Clz.fgn7)
|
||||||
ids = self.ih.searchBySubject(hlst['head'][2], True)
|
ids = self.ih.searchBySubject(hlst['head'][2], True)
|
||||||
for mid in ids :
|
for mid in ids :
|
||||||
self.ih.delete(mid, True)
|
self.ih.delete(mid, True, False)
|
||||||
|
Clz.print('\n expunge, waiting pls...\n', Clz.fgB1)
|
||||||
|
self.ih.srv.expunge()
|
||||||
|
sleep(2)
|
||||||
self.index.rem(key)
|
self.index.rem(key)
|
||||||
done = self.saveIndex()
|
done = self.saveIndex()
|
||||||
rt.stop()
|
rt.stop()
|
||||||
|
@ -732,7 +744,7 @@ class ImpraStorage:
|
||||||
if row[ImpraIndex.BFLAG] == ImpraIndex.FILE_CRYPT:
|
if row[ImpraIndex.BFLAG] == ImpraIndex.FILE_CRYPT:
|
||||||
self.decryptTextFile(path)
|
self.decryptTextFile(path)
|
||||||
print()
|
print()
|
||||||
Clz.print(' deploying in ', Clz.fgn7, False)
|
Clz.print(' deploying in ', Clz.fgn7)
|
||||||
Clz.print(dirname(path), Clz.fgB2)
|
Clz.print(dirname(path), Clz.fgB2)
|
||||||
print()
|
print()
|
||||||
done = True
|
done = True
|
||||||
|
|
|
@ -324,7 +324,7 @@ class ImapHelper:
|
||||||
self.srv.select(self.rootBox)
|
self.srv.select(self.rootBox)
|
||||||
rt.stop()
|
rt.stop()
|
||||||
|
|
||||||
def delete(self, mid, byUid=False):
|
def delete(self, mid, byUid=False, expunge=True):
|
||||||
""""""
|
""""""
|
||||||
rt = RuTime(eval(__CALLER__('%i' % int(mid))))
|
rt = RuTime(eval(__CALLER__('%i' % int(mid))))
|
||||||
status = None
|
status = None
|
||||||
|
@ -336,10 +336,11 @@ class ImapHelper:
|
||||||
Clz.print(' flag msg ' , Clz.fgn7, False)
|
Clz.print(' flag msg ' , Clz.fgn7, False)
|
||||||
Clz.print(str(mid) , Clz.fgB1, False)
|
Clz.print(str(mid) , Clz.fgB1, False)
|
||||||
Clz.print(' as deleted', Clz.fgn7)
|
Clz.print(' as deleted', Clz.fgn7)
|
||||||
|
|
||||||
Clz.print('\n expunge, waiting server...\n', Clz.fgB1)
|
if expunge :
|
||||||
self.srv.expunge()
|
Clz.print('\n expunge, waiting server...\n', Clz.fgB1)
|
||||||
sleep(2)
|
self.srv.expunge()
|
||||||
|
sleep(2)
|
||||||
|
|
||||||
rt.stop()
|
rt.stop()
|
||||||
return status == self.OK
|
return status == self.OK
|
||||||
|
|
Loading…
Reference in New Issue
Block a user