# compdef yafc

_yafc() {
    local arguments
    arguments=(
    '(--anon -a)'{--anon,-a}'[try an anonymous login]'
    '(--debug -d)'{--debug,-d}'[print all messages to/from server]'
    '(--dump-rc -D)'{--dump-rc,-D}'[print the default configuration file]'
    '(--mechanism -m)'{--mechanism=-,-m}'[specify a security mechanism]:security mechanism:(krb4, krb5, none)'
    '(--norc -n)'{--norc,-n}'[do not read the users configuration file]'
    '(--noproxy -p)'{--noproxy,-p}'[do not connect via the proxy]'
    '(--quiet -q)'{--quiet,-q}'[do not print the welcome message]'
    '(--rcfile -r)'{--rcfile=-,-r}'[specify a configuration file]:configuration file:_files'
    '(--trace -t)'{--trace=-,-t-}'[specify a trace file]:trace file:_files'
    '(--noauto -u)'{--noauto,-u}'[do not login automagically]'
    '(--noalias -U)'{--noalias,-U}'[as --noauto, but bookmark aliases is disabled]'
    '(--verbose -v)'{--verbose,-v}'[print all responses received]'
    '(--wait -w)'{--wait,-w=}'[specify a waiting time between connection attempts]:wait time: '
    '(--workdir -W)'{--workdir=,-W+}'[use a different working directory]:working directory:_directories'
    '(--version -V)'{--version,-V}'[print version information]'
    '(--help -h)'{--help,-h}'[print a short help description]'
    '*:address:_yafc_address'
    )

    _arguments -S -s $arguments
}

 (( $+functions[_yafc_bookmarks] )) ||
_yafc_bookmarks() {
    local bkmfile=~/.yafc/bookmarks
    
    if [[ -f $bkmfile ]]; then
        local -a bkms
        bkms=(${${${(M)"${(f)$(<$bkmfile)}":#machine*alias ##\'*\' #}##machine*alias ##\'}%%\' #}) #" vim syntax goes crazy
        _wanted bookmarks expl 'bookmarks' compadd "$@" -a - bkms
    fi
}

 (( $+functions[_yafc_address] )) ||
_yafc_address() {
  _alternative 'bookmarks:bookmark:_yafc_bookmarks' '_hosts'
}

_yafc "$@"
