#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}"[don't read the users configuration file]"
    '(--noproxy -p)'{--noproxy,-p}"[don't connect via the proxy]"
    '(--quiet -q)'{--quiet,-q}"[don't 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}"[don't login automatically]"
    '(--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 (seconds)'
    '(--workdir -W)'{--workdir=,-W+}'[use a different working directory]:working directory:_directories'
    '(- *)'{--version,-V}'[print version information]'
    '(- *)'{--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 expl
        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 "$@"
