aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/keyringer/completions/bash/keyringer17
-rw-r--r--lib/keyringer/completions/zsh/_keyringer12
2 files changed, 23 insertions, 6 deletions
diff --git a/lib/keyringer/completions/bash/keyringer b/lib/keyringer/completions/bash/keyringer
index ccc1851..875e6ab 100644
--- a/lib/keyringer/completions/bash/keyringer
+++ b/lib/keyringer/completions/bash/keyringer
@@ -60,20 +60,22 @@ _keyringer() {
# Process config
source $config/config
- path="`eval echo '$'$instance`"
- keyrings="`ls --color=never $config | sed -e 's/config//'`"
+ keyrings="`ls --color=never $config | sed -e 's/config//' | xargs`"
# Available instances
- instances="`echo $keyrings | sed -e 's/ /|/'`"
+ instances="`echo $keyrings | sed -e 's/ /\\\|/g'`"
# The current instance
instance="${COMP_WORDS[1]}"
+ path="`eval echo '$'$instance`"
# Command completions
if [ "${#COMP_WORDS[@]}" == "2" ]; then
opts="$keyrings"
- elif [ "${#COMP_WORDS[@]}" == "3" ] && echo "${prev}" | grep -qe "[$instances]"; then
+ elif [ "${#COMP_WORDS[@]}" == "3" ] && echo "${prev}" | grep -qe "$instances"; then
opts="`export KEYRINGER_CHECK_VERSION=false && keyringer $instance commands`"
+ elif [ "${#COMP_WORDS[@]}" == "3" ]; then
+ opts="init"
elif [ "${#COMP_WORDS[@]}" == "4" ]; then
case "${prev}" in
options|preferences)
@@ -91,6 +93,13 @@ _keyringer() {
git)
opts="$(_keyringer_git_complete ${cur})"
;;
+ init)
+ # Thanks http://unix.stackexchange.com/questions/55520/create-bash-completion-script-to-autocomplete-paths-after-is-equal-sign
+ cur=${cur//\\ / }
+ [[ ${cur} == "~/"* ]] && cur=${cur/\~/$HOME}
+
+ opts="$(compgen -o dirnames ${cur})"
+ ;;
*)
;;
esac
diff --git a/lib/keyringer/completions/zsh/_keyringer b/lib/keyringer/completions/zsh/_keyringer
index 47a83fc..119d26d 100644
--- a/lib/keyringer/completions/zsh/_keyringer
+++ b/lib/keyringer/completions/zsh/_keyringer
@@ -20,8 +20,9 @@ _keyringer() {
# Process config
source $config/config
- local keyrings="`ls --color=never $config | sed -e 's/config//'`"
+ local keyrings="`ls --color=never $config | sed -e 's/config//' | xargs`"
local keyring_path="`eval echo '$'$words[2]`"
+ local instances="`echo $keyrings | sed -e 's/ /\\\|/g'`"
_arguments \
'1: :->keyring' \
@@ -35,7 +36,11 @@ _keyringer() {
_arguments "1:Keyrings:($keyrings)"
;;
action)
- compadd "$@" `KEYRINGER_CHECK_VERSION=false keyringer $words[2] commands`
+ if echo $words[2] | grep -qe "$instances"; then
+ compadd "$@" `KEYRINGER_CHECK_VERSION=false keyringer $words[2] commands`
+ else
+ compadd "$@" "init"
+ fi
;;
options)
case $words[3] in
@@ -54,6 +59,9 @@ _keyringer() {
git)
compadd "$@" $(_keyringer_git_complete $words[4])
;;
+ init)
+ _files
+ ;;
*)
;;
esac