Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1341)

Unified Diff: src/scripts/bash_completion

Issue 652129: Programmatic bash completion for Chromium OS build scripts. (Closed)
Patch Set: Handle --arg foo as well (no equal). Created 10 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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:
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698