blob: 2c5c00f558654fea43add12a7aba966f9077ade8 [file] [log] [blame]
[email protected]37e2a8082012-02-03 21:44:541# Copyright (c) 2012 The Chromium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5# Flag completion rule for bash.
6# To load in your shell, "source path/to/this/file".
7
lukaszaca7fac622016-10-26 18:59:228# Usage examples
9# ==============
10#
11# Browser command line switches:
12# $ out/gn/chrome --site-per-pro<tab>
13# $ google-chrome --site-per-pro<tab>
14#
15# Test switches (i.e. --gtest_* and --test-launcher-* switches):
16# $ out/gn/unit_tests --gtest_filt<tab>
17# $ out/gn/unit_tests --test-launcher-j<tab>
18#
19# Layout test switches:
20# $ third_party/WebKit/Tools/Scripts/run-webkit-tests --additional-driver-f<tab>
21# $ .../run-webkit-tests --additional-driver-flag=--site-per-pro<tab>
qyearsley85380c92017-01-27 02:46:2022#
23# Blink webkit-patch sub-commands:
24# $ third_party/WebKit/Tools/Scripts/webkit-patch reb<tab>
lukaszaca7fac622016-10-26 18:59:2225
qyearsley85380c92017-01-27 02:46:2026if [ -n "$BASH_SOURCE" ]; then
27 # The $BASH_SOURCE variable returns path of current script in bash.
28 chrome_source=$(cd $(dirname $BASH_SOURCE)/.. && pwd)
29else
30 # This is here for other similar shells, e.g. zsh.
31 chrome_source=$(cd $(dirname $0)/.. && pwd)
32fi
[email protected]37e2a8082012-02-03 21:44:5433
34_chrome_flag() {
35 local cur targets
36 cur="${COMP_WORDS[COMP_CWORD]}"
37 targets=$(cd $chrome_source; \
[email protected]4f1594d2012-02-03 23:37:2138 git ls-files '*switches*' | \
[email protected]19f30442012-02-22 01:47:4439 xargs sed -ne 's/^[^/]*"\([^" /]\{1,\}\)".*/--\1/p')
[email protected]37e2a8082012-02-03 21:44:5440 COMPREPLY=($(compgen -W "$targets" -- "$cur"))
41 return 0
42}
43
lukaszab2789fb2016-10-19 23:59:5044_gtest_flag() {
45 local cur gtest_flags launcher_flags
46 cur="${COMP_WORDS[COMP_CWORD]}"
47 gtest_flags=$(sed -ne 's/^.*FromGTestEnv("\([^" /]\+\)".*$/--gtest_\1/p' \
48 "$chrome_source/testing/gtest/src/gtest.cc")
49 chrome_test_launcher_flags=$(sed -ne 's/^[^/]*"\([^" /]\{1,\}\)".*/--\1/p' \
50 "$chrome_source/base/test/test_switches.cc")
51 COMPREPLY=($(
52 compgen -W "$gtest_flags $chrome_test_launcher_flags" -- "$cur"))
53 return 0
54}
55
lukaszaca7fac622016-10-26 18:59:2256_layout_test_flag() {
57 local cur targets webkitpy_dir prev_switch
58 cur="${COMP_WORDS[COMP_CWORD]}"
59
60 # Complete content_shell switches if appropriate.
61 if [ "${COMP_CWORD}" -gt 2 -a "${COMP_WORDS[COMP_CWORD-1]}" = "=" ]
62 then
63 prev_switch="${COMP_WORDS[COMP_CWORD-2]}"
64 if [ "$prev_switch" = "--additional-drt-flag" -o \
65 "$prev_switch" = "--additional-driver-flag" ]
66 then
67 targets=$(cd $chrome_source; \
68 git ls-files 'content/*switches*.cc' | \
69 xargs sed -ne 's/^[^/]*"\([^" /]\{1,\}\)".*/--\1/p')
70 COMPREPLY=($(compgen -W "$targets" -- "$cur"))
71 return 0
72 fi
73 fi
74
75 # Complete run-webkit-tests switches.
76 webkitpy_dir="$chrome_source/third_party/WebKit/Tools/Scripts/webkitpy"
77 targets=$(sed -ne 's/^[[:space:]]*"\(--[a-z-]\+\)",[[:space:]]*$/\1/p' \
78 "$webkitpy_dir/layout_tests/run_webkit_tests.py")
79 COMPREPLY=($(compgen -W "$targets" -- "$cur"))
80 return 0
81}
82
qyearsley85380c92017-01-27 02:46:2083_webkit_patch_flag() {
84 local cur targets webkit_scripts_dir
85 cur="${COMP_WORDS[COMP_CWORD]}"
86 webkit_scripts_dir=$chrome_source/third_party/WebKit/Tools/Scripts
87 targets=$($webkit_scripts_dir/webkit-patch help | grep '^ [a-z]' | \
88 awk '{ print $1 }')
89 COMPREPLY=($(compgen -W "$targets" -- "$cur"))
90 return 0
91}
92
[email protected]37e2a8082012-02-03 21:44:5493complete -F _chrome_flag google-chrome
94complete -F _chrome_flag chrome
[email protected]19f30442012-02-22 01:47:4495if [ $(uname) = "Darwin" ]
96then
97 complete -F _chrome_flag Chromium
98fi
lukaszab2789fb2016-10-19 23:59:5099
100for gtest_test_executable in $(
101 cd $chrome_source;
lukasza990b7f872016-10-28 19:25:08102 git ls-files '*/BUILD.gn' | xargs sed -ne 's/^.*test("\([^"]\+\)").*$/\1/p'
lukaszab2789fb2016-10-19 23:59:50103); do
104 complete -F _gtest_flag $gtest_test_executable
105done
lukaszaca7fac622016-10-26 18:59:22106
107complete -F _layout_test_flag run-webkit-tests
qyearsley85380c92017-01-27 02:46:20108complete -F _webkit_patch_flag webkit-patch