#compdef auto-apt

local expl prev="$words[CURRENT-1]"

# if there is a command in arguments ?
if [[ -n $words[(r)(run|update|update-local|merge|del|check|list|search|debuilt|status)] ]] ; then

  # yes, add completion for command arguments and command options
  if [[ -n $words[(r)(update|update-local|merge)] && "$words[CURRENT]" = -* ]] ; then
    _wanted option expl 'option' compadd - "-a" && return;
  fi

  if [[ -n $words[(r)(check|list|search)] && "$words[CURRENT]" = -* ]] ; then
    _wanted option expl 'option' compadd - "-v" "-f" && return;
  fi

  case $prev in
    run) _wanted command expl 'command' _files -g '*(/,*)' && return ;;
    del) _wanted package expl 'package' _deb_packages avail && return ;;
  esac
else
  _arguments \
    '-a:distribution:_values -s , distribution main contrib non-free non-US none' \
    '-p:hook:_values -s , hook exec open access stat none' \
    '-D:dbfile:_files' \
    '-F:filedb:_files' \
    -h -s -y -q -i -X -x -L \
    '*:command:(run update update-local merge del check list search debuild status)' && return
fi

return 1
