Index: src/scripts/bash_completion |
diff --git a/src/scripts/bash_completion b/src/scripts/bash_completion |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b453ca56ca00ff70580e0b93a82a17148aec4fe8 |
--- /dev/null |
+++ b/src/scripts/bash_completion |
@@ -0,0 +1,100 @@ |
+# Copyright (c) 2010 The Chromium OS Authors. All rights reserved. |
+# Use of this source code is governed by a BSD-style license that can be |
+# found in the LICENSE file. |
+ |
+# Add programmable completion to some Chromium OS build scripts |
+ |
+ |
+# Look for "--arg=foo" or "--arg foo" (where foo can be an empty string) in the |
+# word to be completed. If found, echo "--arg=foo". |
+# |
+_argeq() |
+{ |
+ local arg=$1 |
+ local w0="${COMP_WORDS[COMP_CWORD]}" |
+ local w1="${COMP_WORDS[COMP_CWORD-1]}" |
+ |
+ # Check for completing "--arg=" |
+ if [ "${w1}" == ${arg} -a "${w0}" == "=" ]; then |
+ echo "${w1}${w0}" |
+ return 0 |
+ fi |
+ |
+ # Check for completing "--arg foo" |
+ if [ "${w1}" == ${arg} ]; then |
+ echo "${w1}=${w0}" |
+ return 0 |
+ fi |
+ |
+ # Check for completing "--arg=foo" |
+ if [ ${COMP_CWORD} -gt 2 ]; then |
+ local w2="${COMP_WORDS[COMP_CWORD-2]}" |
+ if [ "${w2}" == ${arg} -a "${w1}" == "=" ]; then |
+ echo "${w2}${w1}${w0}" |
+ return 0 |
+ fi |
+ fi |
+} |
+ |
+ |
+# echo the existing target board sysroots |
+# |
+_board_sysroots() |
+{ |
+ local builddir=/build |
+ if [ ! -d ${builddir} ]; then |
+ echo "" |
+ else |
+ echo $(command ls "${builddir}") |
+ fi |
+} |
+ |
+# Completion for --board= argument for existing board sysroots |
+# |
+_board_sysroot() |
+{ |
+ COMPREPLY=() |
+ local arg=$(_argeq --board) |
+ if [[ ${arg} == --board=* ]]; then |
+ COMPREPLY=( $(compgen -W "$(_board_sysroots)" -- ${arg#--board=}) ) |
+ return 0 |
+ fi |
+} |
+ |
+complete -o bashdefault -o default -F _board_sysroot \ |
+ build_autotest.sh \ |
+ build_image \ |
+ build_packages \ |
+ image_to_usb |
+ |
+ |
+# echo the existing target board overlays |
+# |
+_board_overlays() |
+{ |
+ local overlaydir=../overlays |
+ if [ ! -d ${overlaydir} ]; then |
+ echo "" |
+ else |
+ echo $(command ls $overlaydir | grep overlay- | sed s,overlay-,,) |
+ fi |
+} |
+ |
+# Completion for --board= argument for existing board overlays |
+# |
+_board_overlay() |
+{ |
+ COMPREPLY=() |
+ local arg=$(_argeq --board) |
+ if [[ ${arg} == --board=* ]]; then |
+ COMPREPLY=( $(compgen -W "$(_board_overlays)" -- ${arg#--board=}) ) |
+ return 0 |
+ fi |
+} |
+ |
+complete -o bashdefault -o default -F _board_overlay setup_board |
+ |
+ |
+### Local Variables: |
+### mode: shell-script |
+### End: |