From d9d0c1fdec1a1beebba75e00af7af6f9adc94535 Mon Sep 17 00:00:00 2001 From: Silvio Rhatto Date: Sun, 29 Sep 2013 18:43:10 -0300 Subject: Shell completion: adding 'init' subcommand --- lib/keyringer/completions/bash/keyringer | 17 +++++++++++++---- lib/keyringer/completions/zsh/_keyringer | 12 ++++++++++-- 2 files changed, 23 insertions(+), 6 deletions(-) (limited to 'lib/keyringer/completions') 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 -- cgit v1.2.3