[bash-completion] Support some gm.py completion

Support the various combinations of arch-mode-target that gm.py
understands, and also completion of cctests.

Bug: v8:11567
No-Try: true
Change-Id: I05285a93253f4225889e949890f5352bbc173c91
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2774708
Commit-Queue: Zhi An Ng <zhin@chromium.org>
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#73639}
This commit is contained in:
Ng Zhi An 2021-03-24 09:21:28 -07:00 committed by Commit Bot
parent 433bee6bc2
commit c701a39e34
2 changed files with 31 additions and 0 deletions

View File

@ -118,3 +118,21 @@ _maybe_setup_gdb_completions() {
}
_maybe_setup_gdb_completions
unset _maybe_setup_gdb_completions
_get_gm_flags() {
"$v8_source/tools/dev/gm.py" --print-completions
# cctest ignore directory structure, it's always "cctest/filename".
find "$v8_source/test/cctest/" -type f -name 'test-*' | \
xargs basename -a -s ".cc" | \
while read -r item; do echo "cctest/$item/*"; done
}
_gm_flag() {
local targets=$(_get_gm_flags)
COMPREPLY=($(compgen -W "$targets" -- "${COMP_WORDS[COMP_CWORD]}"))
return 0
}
# gm might be an alias, based on https://v8.dev/docs/build-gn#gm.
complete -F _gm_flag gm.py gm

View File

@ -170,6 +170,17 @@ def PrintHelpAndExit():
print(HELP)
sys.exit(0)
def PrintCompletionsAndExit():
for a in ARCHES:
print("%s" % a)
for m in MODES:
print("%s" % m)
print("%s.%s" % (a, m))
for t in TARGETS:
print("%s" % t)
print("%s.%s.%s" % (a, m, t))
sys.exit(0)
def _Call(cmd, silent=False):
if not silent: print("# %s" % cmd)
return subprocess.call(cmd, shell=True)
@ -377,6 +388,8 @@ class ArgumentParser(object):
def ParseArg(self, argstring):
if argstring in ("-h", "--help", "help"):
PrintHelpAndExit()
if argstring == "--print-completions":
PrintCompletionsAndExit()
arches = []
modes = []
targets = []