From fc898eff65a19f6e0869a189e405a7bc8b44ac7e Mon Sep 17 00:00:00 2001 From: ridiculousfish Date: Wed, 26 Dec 2012 18:57:47 -0800 Subject: [PATCH] Move make_vcs_completions.py to build_tools, and eliminate make_completions.py, which was a manage parser - we have a much better one now --- .../make_vcs_completions.fish | 0 make_completions.py | 164 ------------------ 2 files changed, 164 deletions(-) rename make_vcs_completions.fish => build_tools/make_vcs_completions.fish (100%) delete mode 100755 make_completions.py diff --git a/make_vcs_completions.fish b/build_tools/make_vcs_completions.fish similarity index 100% rename from make_vcs_completions.fish rename to build_tools/make_vcs_completions.fish diff --git a/make_completions.py b/make_completions.py deleted file mode 100755 index 3c74aa316..000000000 --- a/make_completions.py +++ /dev/null @@ -1,164 +0,0 @@ -#!/usr/bin/env python - -import sys -try: - import commands -except ImportError: - import subprocess -import re - -# Regexes for performing cleanup - -cl = { re.compile(r"-[ \t]*\n[ \t\r]+" ):"", - re.compile(r"[ \n\t\r]+", re.MULTILINE):" ", - re.compile(r"^[ \n\t\r]"):"", - re.compile(r"[ \n\t\r]$"):"" } - -def header(cmd): - print('''# -# Command specific completions for the {0} command. -# These completions were generated from the commands -# man page by the make_completions.py script, but may -# have been hand edited since. -# -'''.format(cmd)) - -def up_first(s): - return s[0].upper() + s[1:] - -def escape_quotes(s): - return re.sub('\'', '\\\'', s) - -def escape(s): - return re.sub('([\'"#%*?])', r"\\\1", s) - -def clean(s): - res=s - for r, str in cl.items(): - res = r.sub(str, res) - return res - -def print_completion( cmd, switch_arr, arg, desc ): - - if len(switch_arr)==0: - return - - res = "complete -c {0}".format(cmd) - for sw in switch_arr: - - offset=1 - switch_type = "o" - - if len(sw) == 2: - switch_type = "s" - - if sw[1] == "-": - switch_type = "l" - offset=2 - - res += " -{0} {1}".format(switch_type, escape(sw[offset:])) - - res += " --description '{0}'".format(up_first(escape_quotes(clean(desc)))) - - print(res) - -cmd = sys.argv[1] - -header(cmd) - -try: - man = commands.getoutput( "man {0} | col -b".format(cmd)) -except NameError: - man = subprocess.getoutput( "man {0} | col -b".format(cmd)) - -remainder = man - -MODE_NONE = 0 -MODE_SWITCH = 1 -MODE_BETWEEN = 2 -MODE_BETWEEN_IGNORE = 3 -MODE_DESC = 4 - -mode = MODE_NONE -pos = 0 -sw='' -sw_arr=[] -switch_end="= \t\n[," -switch_between_ignore="[=" -switch_between_continue=" \t\n|" -before_switch=" \t\r" -between_ignore=" \t\n]" -pc=False -desc='' - -can_be_switch =True - -for c in man: - - if mode == MODE_NONE: - if c == '-' and can_be_switch: - mode = MODE_SWITCH - sw = '-' - - elif c == '\n': - can_be_switch = True - elif before_switch.find(c)<0: - can_be_switch = False - - - elif mode == MODE_SWITCH: - if not switch_end.find(c)>=0: - sw+=c - else: - if len(sw) > 1: - sw_arr.append(sw) - - if switch_between_ignore.find(c) >= 0: - mode=MODE_BETWEEN_IGNORE - else: - mode=MODE_BETWEEN - # print "End of switch argumnt", sw, "switch to between mode" - sw='' - - elif mode == MODE_BETWEEN: - if c == '-': - mode = MODE_SWITCH - sw = '-' - elif switch_between_ignore.find(c) >= 0: - mode = MODE_BETWEEN_IGNORE - # print "Found character", c, "switching to ignore mode" - elif not switch_between_continue.find(c) >= 0: - mode = MODE_DESC - desc = c - - elif mode == MODE_BETWEEN_IGNORE: - if between_ignore.find(c)>=0: - mode = MODE_BETWEEN - - elif mode == MODE_DESC: - - stop = False - - if c == '.': - stop = True - - if c == '\n' and pc == '\n': - stop=True - - if stop: - mode=MODE_NONE - - print_completion( cmd, sw_arr, None, desc ) - - sw_arr = [] - - desc = '' - - else: - desc += c - - else: - print("Unknown mode {0}".format(mode)) - - pc = c -