Add bash completion support for Capistrano
authorTimo Webler <timo.webler@dkd.de>
Wed, 4 Dec 2013 12:42:58 +0000 (13:42 +0100)
committerTimo Webler <timo.webler@dkd.de>
Wed, 4 Dec 2013 12:42:58 +0000 (13:42 +0100)
completion/available/capistrano.completion.bash [new file with mode: 0644]

diff --git a/completion/available/capistrano.completion.bash b/completion/available/capistrano.completion.bash
new file mode 100644 (file)
index 0000000..a48bd4d
--- /dev/null
@@ -0,0 +1,17 @@
+#!/usr/bin/env bash
+# Bash completion support for Capistrano.
+
+export COMP_WORDBREAKS=${COMP_WORDBREAKS/\:/}
+
+_capcomplete() {
+    if [ -f Capfile ]; then
+        recent=`ls -t .cap_tasks~ Capfile **/*.cap 2> /dev/null | head -n 1`
+        if [[ $recent != '.cap_tasks~' ]]; then
+            cap --tool --tasks | cut -d " " -f 2 > .cap_tasks~
+        fi
+        COMPREPLY=($(compgen -W "`cat .cap_tasks~`" -- ${COMP_WORDS[COMP_CWORD]}))
+        return 0
+    fi
+}
+
+complete -o default -o nospace -F _capcomplete cap