123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- # Copyright (c) 2012 The Chromium Authors. All rights reserved.
- # 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"))
- return 0
- }
- _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"))
- return 0
- }
- _web_test_flag() {
- local cur targets blinkpy_dir prev_switch
- cur="${COMP_WORDS[COMP_CWORD]}"
- # Complete content_shell switches if appropriate.
- if [ "${COMP_CWORD}" -gt 2 -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"))
- return 0
- 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"))
- return 0
- }
- _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"))
- return 0
- }
- complete -F _chrome_flag google-chrome
- complete -F _chrome_flag chrome
- complete -F _chrome_flag content_shell
- if [ $(uname) = "Darwin" ]
- then
- complete -F _chrome_flag Chromium
- fi
- for gtest_test_executable in $(
- 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
|