# 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)
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
# 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' \
_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
git)
compadd "$@" $(_keyringer_git_complete $words[4])
;;
+ init)
+ _files
+ ;;
*)
;;
esac