#compdef apt-file local curcontext="$curcontext" state line expl cmds ret=1 typeset -A opt_args _arguments -C -S \ '(--cache -c)'{--cache,-c}'[cache directory]:directory:_directories' \ '(-v --verbose)'{-v,--verbose}'[verbose]' \ '(--cdrom-mount -d)'{--cdrom-mount,-d}'[cdrom mount point]:directory:_directories' \ '(--from-file -f --from-deb -D)'{--from-file,-f}'[read patterns from given file]' \ '(--from-deb -D --from-file -f)'{--from-dev,-D}'[use contents of given .deb archives as patterns]' \ '(--ignore-case -i)'{--ignore-case,-i}'[ignore case]' \ '(--regexp -x)'{--regexp,-x}'[regular expression]' \ '(-V --version)'{-V,--version}'[version]' \ '(-a --architecture)'{-a,--architecture}'[architecture]:architecture:_deb_architectures' \ '(-s --sources-list)'{-s,--sources-list}'[source.list file]:file:_files' \ '(-l --package-only)'{-l,--package-only}'[only display package name]' \ '(-N --non-interactive)'{-N,--non-interactive}'[skip schemes requiring user input]' \ '(-F --fixed-string)'{-F,--fixed-string}'[do not expand search pattern]' \ '(-y --dummy)'{-y,--dummy}'[run in dummy mode]' \ '(-)'{-h,--help}'[display help screen]' \ '1: :->cmds' \ '*: :->args' && ret=0 case $state in cmds) cmds=( 'update:resynchronize package contents' {find,search}:'search in which package file is included' {list,show}:'list contents of a package' 'purge:remove all Contents-.gz files in cache directory' ) _describe -t commands 'apt-list command' cmds ;; args) case $line[1] in search|find) if (( $#opt_args[(I)(-D|--from-deb)] )); then _wanted files expl 'debian package' _files -g '*.deb(-.)' elif (( $#opt_args[(I)(-f|--from-file)] )); then _files else _message -e patterns "pattern" fi ;; list|show) _deb_packages avail ;; update|purge) # do nothing ;; *) _message "command $line[1] not available" ;; esac ;; esac && ret=0 return ret