# bash completion for ssh-agent-filter and afssh # # Copyright (C) 2013 Timo Weingärtner # # This file is part of ssh-agent-filter. # # ssh-agent-filter is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # ssh-agent-filter is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with ssh-agent-filter. If not, see . _ssh-agent-filter () { local cur prev words cword opts _init_completion -n : || return _quote_readline_by_ref "$cur" cur opts="--comment --debug --fingerprint --help --key --version" case "$prev" in -c|--comment) # hm, key comments might contain anything, how can I quote them ? local comments="$(ssh-add -L | cut -d\ -f3- )" COMPREPLY=( $(compgen -W "$comments" -- "$cur") ) return 0 ;; -f|--fp|--fingerprint) # fingerprints contain many colons local fingerprints="$(ssh-add -l | cut -d\ -f2 )" COMPREPLY=( $(compgen -W "$fingerprints" -- "$cur") ) __ltrim_colon_completions "$cur" return 0 ;; -k|--key) # this is base64, no quoting needed local keys="$(ssh-add -L | cut -d\ -f2 )" COMPREPLY=( $(compgen -W "$keys" -- "$cur") ) return 0 ;; esac COMPREPLY=( $(compgen -W "$opts" -- "$cur") ) return 0 } && complete -F _ssh-agent-filter ssh-agent-filter _ssh-agent-filter_have_dash-dash () { local i for (( i=0 ; i < cword ; i++ )) ; do [ "${words[$i]}" = -- ] && return 0 done return 1 } _afssh () { local cur prev words cword _init_completion -n : || return if _ssh-agent-filter_have_dash-dash; then # complete ssh _xfunc ssh _ssh else _ssh-agent-filter fi } && complete -F _afssh afssh # vim:ft=sh: