X-Git-Url: https://git.ralfj.de/saartuer.git/blobdiff_plain/27ea44f35684aeab9a5677bd64892d6de950fb4e..bf408ef82859e90b60f30fd8edf6503c7e88394f:/tyshell diff --git a/tyshell b/tyshell index 090403e..0b9b943 100755 --- a/tyshell +++ b/tyshell @@ -9,8 +9,7 @@ import socket tuerSock = "/run/tuer.sock" # use a histfile -# FIXME: Why not ".tyshellhist"? -histfile = os.path.join(os.path.expanduser("~"), ".pyshellhist") +histfile = os.path.join(os.path.expanduser("~"), ".tyshellhist") try: readline.read_history_file(histfile) except IOError: @@ -20,8 +19,8 @@ atexit.register(readline.write_history_file, histfile) atexit.register(print, "Bye") # available commands -def help(c): - print("Available commands: %s" % ", ".join(sorted(commands.keys()))) +def helpcmd(c): + print("Available commands: %s" % ", ".join(sorted(longcommands.keys()))) def extcmd(cmd): def run(c): @@ -48,12 +47,45 @@ def exitcmd(c): commands = { 'exit': exitcmd, - 'help': help, + 'help': helpcmd, 'open': sendcmd(tuerSock, 'open'), 'close': sendcmd(tuerSock, 'close'), 'buzz': sendcmd(tuerSock, 'buzz'), } +# command convenience shortcuts +def filterCommonPrefix (strings, length): + # ignores duplicates in the string list "strings" + toremove=[] + for a in strings: + for b in strings: + if a != b: + if a[:length] == b[:length]: + toremove.append(a) + toremove.append(b) + ret = list(strings) # copy + for x in toremove: + try: + ret.remove(x) + except ValueError: + pass + return ret + +def shortcutify (dic): + maxlen = 0 + for x in dic.keys(): + if len(x) > maxlen: + maxlen = len(x) + for i in range(maxlen): + shortable = filterCommonPrefix (dic.keys(), i) + for x in shortable: + dic[x[:i]] = dic[x] + return dic # only for convenience, as dic is passed by reference + +longcommands = commands.copy() +shortcutify (commands) + + # input loop print("Welcome to tyshell. Use help to see what you can do.") while True: