#compdef dput

_dput() {
_arguments \
  '(-c --config)'{-c,--config}'[specify config file]:config file:_files' \
  '(-d --debug)'{-d,--debug}'[debug mode]' \
  '(-D --dinstall)'{-D,--dinstall}'[run dinstall after upload]' \
  '(-e --delayed)'{-E,--delayed}'[number of days in delayed queue]:number of days:(0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15)' \
  '(-f --force)'{-f,--force}'[force upload of already uploaded package]' \
  '(-H --host-list)'{-H,--host-list}'[display host list]' \
  '(-l --lintian)'{-l,--lintian}'[run lintian before upload]' \
  '(-o --check-only)'{-o,--check-only}'[check the package, do not upload]' \
  '(-p --print)'{-p,--print}'[print configuration]' \
  '(-s --simulate)'{-s,--simulate}'[simulate an upload only]' \
  '(-u --unchecked)'{-u,--unchecked}'[do not check GPG signature on the changes file]' \
  '(-v --version)'{-v,--version}'[show version information]' \
  '1::host:_dput_hosts' \
  '*:changes file:_files -g "*.changes(-.)"'
}

_dput_hosts() {
  local expl

  if ( [[ ${+_dput_cfhosts} -eq 0 ]] || _cache_invalid dputhosts ) && ! _retrieve_cache dputhosts; then
    _dput_cfhosts=(${${(M)${(f)"$(dput -H)"}:#*=>*}/ =>*/})
    _store_cache dputhosts _dput_cfhosts
  fi

  _wanted dputhosts expl 'target host' compadd -a _dput_cfhosts
}

_dput "$@"
