aboutsummaryrefslogtreecommitdiff
path: root/bash-completion.bash
diff options
context:
space:
mode:
Diffstat (limited to 'bash-completion.bash')
-rw-r--r--bash-completion.bash25
1 files changed, 25 insertions, 0 deletions
diff --git a/bash-completion.bash b/bash-completion.bash
new file mode 100644
index 000000000..b0367c030
--- /dev/null
+++ b/bash-completion.bash
@@ -0,0 +1,25 @@
+# Use git-annex's built-in bash completion
+# This bash completion is generated by the option parser, so it covers all
+# commands, all options, and will never go out of date!
+source <(git-annex --bash-completion-script git-annex)
+
+# Called by git's bash completion script when completing "git annex"
+_git_annex() {
+ local cmdline
+ CMDLINE=(--bash-completion-index $(($COMP_CWORD - 1)))
+
+ local seen_git
+ local seen_annex
+ for arg in ${COMP_WORDS[@]}; do
+ if [ "$arg" = git ] && [ -z "$seen_git" ]; then
+ seen_git=1
+ CMDLINE=(${CMDLINE[@]} --bash-completion-word git-annex)
+ elif [ "$arg" = annex ] && [ -z "$seen_annex" ]; then
+ seen_annex=1
+ else
+ CMDLINE=(${CMDLINE[@]} --bash-completion-word $arg)
+ fi
+ done
+
+ COMPREPLY=( $(git-annex "${CMDLINE[@]}") )
+}