add readline completion (+ fixes)

This commit is contained in:
boyska 2016-12-15 14:21:07 +01:00
parent c002381b9e
commit 7be296856a

View file

@ -3,6 +3,7 @@ import sys
from itertools import imap from itertools import imap
import os.path import os.path
from pprint import pprint from pprint import pprint
import atexit
from dirset import DirSet from dirset import DirSet
from messagenet import Messagenet from messagenet import Messagenet
@ -42,20 +43,33 @@ def main():
conf.update(json.load(open(sys.argv[1]))) conf.update(json.load(open(sys.argv[1])))
user, password = read_pass_file(conf['credfile']) user, password = read_pass_file(conf['credfile'])
with Messagenet() as mn: # conf['browserdriver']) with Messagenet() as mn: # conf['browserdriver'])
mn.login(user, password)
# readline {{{2 # readline {{{2
try: try:
import readline import readline
readline.read_init_file() readline.read_init_file()
readline.read_history_file(os.path.join(
os.path.dirname(os.path.realpath(__file__)),
'.mncli_history'))
except ImportError: # readline not supported on your system except ImportError: # readline not supported on your system
pass pass
except: except:
print "Some error with readline; who cares" print "Some error with readline; who cares"
histfile = os.path.join(os.path.dirname(__file__),
'.mncli_history')
if os.path.exists(histfile):
readline.read_history_file(histfile)
atexit.register(readline.write_history_file, histfile)
def _completer(text, state):
commands = ('help', 'quit', 'calllog', 'forward', 'currency')
options = [c for c in commands if c.startswith(text)]
if readline.get_begidx() != 0:
return None
if state < len(options):
return options[state]
return None
readline.parse_and_bind('tab: complete')
readline.set_completer(_completer)
# }}} # }}}
mn.login(user, password)
print "messagenet command-line. type help for help. type quit for quit" print "messagenet command-line. type help for help. type quit for quit"
while True: while True:
try: try:
@ -91,6 +105,8 @@ def main():
else: else:
print " Invalid command '%s'; type 'help' to get help" % cmd print " Invalid command '%s'; type 'help' to get help" % cmd
# save_calls(calls, conf['datadir'])
if __name__ == '__main__':
main()
# vim: set fdm=marker: # vim: set fdm=marker: