| # Copyright 2012 The Chromium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| # Flag completion rule for bash. |
| # To load in your shell, "source path/to/this/file". |
| |
| # Usage examples |
| # ============== |
| # |
| # Browser command line switches: |
| # $ out/gn/chrome --site-per-pro<tab> |
| # $ google-chrome --site-per-pro<tab> |
| # |
| # Test switches (i.e. --gtest_* and --test-launcher-* switches): |
| # $ out/gn/unit_tests --gtest_filt<tab> |
| # $ out/gn/unit_tests --test-launcher-j<tab> |
| # |
| # Web test switches: |
| # $ third_party/blink/tools/run_web_tests.py --additional-driver-f<tab> |
| # $ .../run_web_tests.py --additional-driver-flag=--site-per-pro<tab> |
| # |
| # Blink blink_tool.py sub-commands: |
| # $ third_party/blink/tools/blink_tool.py reb<tab> |
| |
| if[-n"$BASH_SOURCE"];then |
| # The $BASH_SOURCE variable returns path of current script in bash. |
| chrome_source=$(cd $(dirname $BASH_SOURCE)/..&& pwd) |
| else |
| # This is here for other similar shells, e.g. zsh. |
| chrome_source=$(cd $(dirname $0)/..&& pwd) |
| fi |
| |
| _chrome_flag(){ |
| local cur targets |
| cur="${COMP_WORDS[COMP_CWORD]}" |
| targets=$(cd $chrome_source; \ |
| git ls-files'*switches*'| \ |
| xargs sed-ne's/^[^/]*"\([^" /]\{1,\}\)".*/--\1/p') |
| COMPREPLY=($(compgen-W"$targets"--"$cur")) |
| return0 |
| } |
| |
| _gtest_flag(){ |
| local cur gtest_flags launcher_flags |
| cur="${COMP_WORDS[COMP_CWORD]}" |
| gtest_flags=$(sed-ne's/^.*FromGTestEnv("\([^" /]\+\)".*$/--gtest_\1/p' \ |
| "$chrome_source/third_party/googletest/src/googletest/src/gtest.cc") |
| chrome_test_launcher_flags=$(sed-ne's/^[^/]*"\([^" /]\{1,\}\)".*/--\1/p' \ |
| "$chrome_source/base/test/test_switches.cc") |
| COMPREPLY=($( |
| compgen-W"$gtest_flags $chrome_test_launcher_flags"--"$cur")) |
| return0 |
| } |
| |
| _web_test_flag(){ |
| local cur targets blinkpy_dir prev_switch |
| cur="${COMP_WORDS[COMP_CWORD]}" |
| |
| # Complete content_shell switches if appropriate. |
| if["${COMP_CWORD}"-gt2-a"${COMP_WORDS[COMP_CWORD-1]}"="="] |
| then |
| prev_switch="${COMP_WORDS[COMP_CWORD-2]}" |
| if["$prev_switch"="--additional-drt-flag"-o \ |
| "$prev_switch"="--additional-driver-flag"] |
| then |
| targets=$(cd $chrome_source; \ |
| git ls-files'content/*switches*.cc'| \ |
| xargs sed-ne's/^[^/]*"\([^" /]\{1,\}\)".*/--\1/p') |
| COMPREPLY=($(compgen-W"$targets"--"$cur")) |
| return0 |
| fi |
| fi |
| |
| # Complete run_web_tests.py switches. |
| blinkpy_dir="$chrome_source/third_party/blink/tools/blinkpy" |
| targets=$(sed-ne's/^[[:space:]]*"\(--[a-z-]\+\)",[[:space:]]*$/\1/p' \ |
| "$blinkpy_dir/web_tests/run_webkit_tests.py") |
| COMPREPLY=($(compgen-W"$targets"--"$cur")) |
| return0 |
| } |
| |
| _blink_tool_flag(){ |
| local cur targets blink_tools_dir |
| cur="${COMP_WORDS[COMP_CWORD]}" |
| blink_tools_dir=$chrome_source/third_party/blink/tools |
| targets=$($blink_tools_dir/blink_tool.py help| grep'^ [a-z]'| \ |
| awk'{ print $1 }') |
| COMPREPLY=($(compgen-W"$targets"--"$cur")) |
| return0 |
| } |
| |
| complete-F _chrome_flag google-chrome |
| complete-F _chrome_flag chrome |
| complete-F _chrome_flag content_shell |
| if[ $(uname)="Darwin"] |
| then |
| complete-F _chrome_flagChromium |
| fi |
| |
| for gtest_test_executablein $( |
| cd $chrome_source; |
| git ls-files'*/BUILD.gn'| xargs sed-ne's/^.*test("\([^"]\+\)").*$/\1/p' |
| );do |
| complete-F _gtest_flag $gtest_test_executable |
| done |
| |
| complete-F _web_test_flag run_web_tests.py |
| complete-F _blink_tool_flag blink_tool.py |