diff options
author | Silvio Rhatto <rhatto@riseup.net> | 2013-09-29 18:43:10 -0300 |
---|---|---|
committer | Silvio Rhatto <rhatto@riseup.net> | 2013-09-29 18:43:10 -0300 |
commit | d9d0c1fdec1a1beebba75e00af7af6f9adc94535 (patch) | |
tree | 91f5a2b2cd2a2a3d804b1ef702b70be6cccb058d | |
parent | bdbf214658446e0821e67a5e58695df0881247b6 (diff) | |
download | keyringer-d9d0c1fdec1a1beebba75e00af7af6f9adc94535.tar.gz keyringer-d9d0c1fdec1a1beebba75e00af7af6f9adc94535.tar.bz2 |
Shell completion: adding 'init' subcommand
-rw-r--r-- | lib/keyringer/completions/bash/keyringer | 17 | ||||
-rw-r--r-- | lib/keyringer/completions/zsh/_keyringer | 12 |
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 |