[StGit PATCH] Added basic bash completion script for StGit.
From: Ted Pavlic <ted@tedpavlic.com>
Signed-off-by: Ted Pavlic <ted@tedpavlic.com>
---
contrib/completion/stg-completion.bash | 106 ++++++++++++++++++++++++++++++++
1 files changed, 106 insertions(+), 0 deletions(-)
create mode 100755 contrib/completion/stg-completion.bash
diff --git a/contrib/completion/stg-completion.bash b/contrib/completion/stg-completion.bash
new file mode 100755
index 0000000..13cc792
--- /dev/null
+++ b/contrib/completion/stg-completion.bash
@@ -0,0 +1,106 @@
+#!bash
+#
+# bash completion support for Stacked Git (StGit).
+#
+# Copyright (c) 2009 by Theodore P. Pavlic <ted@tedpavlic.com>
+# Distributed under the GNU General Public License, version 2.0.
+#
+# Design is highly influenced by completion scripts for Mercurial and
+# git.
+#
+# To use these routines:
+#
+# 1) Copy this file to somewhere (e.g. ~/.stg-completion.sh).
+# 2) Added the following line to your .bashrc or .bash_profile:
+# source ~/.stg-completion.sh
+#
+# To submit patches:
+#
+# *) Read Documentation/SubmittingPatches
+# *) Send all patches to the Git mailing list
+#
+# git@vger.kernel.org
+#
+# and CC the message to the StGit maintainer
+#
+# catalin.marinas@gmail.com
+#
+# Prefix the subject with something like "[StGit PATCH]",
+# "[StGit PATCH i/n]", "[StGit PATCH RFC]", or similar. Patches
+# should be "Signed-off-by:" you as described in
+# Documentation/SubmittingPatches.
+#
+# It is recommended that editors submit patches using utilities
+# like
+#
+# stg mail
+# git send-email
+# git format-patch
+#
+# In the latter case, make sure e-amils submitted to the list do
+# not have "format=flowed" and do not "word wrap" your patch.
+#
+
+# This 'extglob' bash option allows for
+# if [[ $param == @(-h|--help) ]]
+# type statements. That is, the pattern is true if $param matches -h OR
+# --help
+shopt -s extglob
+
+__stg_commands()
+{
+ local commands
+ commands="$("$stg" help|grep '^ '|cut -f3 -d' ' 2>/dev/null)" || commands=""
+ COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$commands' -- "$cur"))
+}
+
+__stg()
+{
+ local cur prev cmd
+ local stg="$1"
+
+ COMPREPLY=()
+ cur="$2"
+ prev="$3"
+
+ if [ $COMP_CWORD -gt 1 ]; then
+ # Try to complete the argument to an already complete stg command
+ # (e.g., "stg command partial<tab>")
+ cmd=${COMP_WORDS[${COMP_CWORD}-1]}
+ __stg_specific_command
+ else
+ # Try to complete an incomplete stg command (possibly blank)
+ # (e.g., "stg partial<tab>")
+ __stg_commands
+ fi
+
+}
+
+# Handle "stg command <tab>" completion
+__stg_specific_command()
+{
+ # Here, try to find (possibly user-defined) functions that match the
+ # command
+ if [ "$(type -t "__stg_cmd_$cmd")" = function ]; then
+ "__stg_cmd_$cmd"
+ return 0
+ fi
+
+ # Special handling of particular stg commands can be placed here
+ case "$cmd" in
+ help)
+ # Complete help with all possible help commands
+ __stg_commands
+ ;;
+ *)
+ # Bail out to normal bash completion
+ return 1
+ ;;
+ esac
+
+ return 0
+}
+
+# Use __stg for stg completion and bail out to normal bash completion
+complete -o bashdefault -o default -F __stg stg 2>/dev/null \
+ || complete -o default -F __stg stg
--
1.6.1.87.g15624