aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/keyringer/completions/bash38
1 files changed, 38 insertions, 0 deletions
diff --git a/lib/keyringer/completions/bash b/lib/keyringer/completions/bash
new file mode 100644
index 0000000..6de93bb
--- /dev/null
+++ b/lib/keyringer/completions/bash
@@ -0,0 +1,38 @@
+#
+# Keyringer bash completion
+#
+
+_keyringer() {
+ local cur prev opts
+ COMPREPLY=()
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ prev="${COMP_WORDS[COMP_CWORD-1]}"
+
+ # Initial options
+ opts="`ls $HOME/.keyringer | sed -e 's/config//'`"
+
+ # Available keyrings
+ keyrings="`echo $opts | sed -e 's/ /|/'`"
+
+ # The current keyring
+ keyring="${COMP_WORDS[1]}"
+
+ # Command completions
+ if [ "${#COMP_WORDS[@]}" == "3" ] && echo "${prev}" | grep -qe "[$keyrings]"; then
+ opts="`keyringer $keyring commands`"
+ else
+ case "${prev}" in
+ ls)
+ opts="`keyringer $keyring ls ${cur}`"
+ ;;
+ *)
+ ;;
+ esac
+ fi
+
+ # Return the available options
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+}
+
+complete -F _keyringer keyringer