diff --git a/bash_completion b/bash_completion new file mode 100644 index 0000000000..ac09e16e82 --- /dev/null +++ b/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: