#compdef apt-file _apt-file() { local -a arguments local state line cmds arguments=( '(--cache -c)'{--cache,-c}'[cache directory]:directory:_directories' '(-v --verbose)'{-v,--verbose}'[verbose]' '(--cdrom-mount -d)'{--cdrom-mount,-d}'[cdrom mount point]:directory:_directories' '(--ignore-case -i)'{--ignore-case,-i}'[ignore case]' '(--regexp -r)'{--regexp,-r}'[regular expression]' '(-V --version)'{-V,--version}'[version]' '(-a --architecture)'{-a,--architecture}'[architecture]:architecture:(alpha arm hppa hurd-i386 i386 ia64 m68k mips mipsel powerpc s390 sparc)' '(-s --sources-list)'{-s,--sources-list}'[source.list file]:file:_files' '(-l --package-only)'{-l,--package-only}'[only display package name]' '(-F --fixed-string)'{-F,--fixed-string}'[do not expand search pattern]' '(-y --dummy)'{-y,--dummy}'[run in dummy mode]' '(-h --help)'{-h,--help}'[display help screen]' '1: :->cmds' '*: :->args' ) _arguments -S $arguments case $state in cmds) cmds=( 'update:resynchronize package contents' 'search:search in which package file is included' 'list:list contents of a package' 'show:alias for list' 'purge:remove all Contents-.gz files in cache directory' ) _describe -t commands 'apt-list command' cmds && ret=0 ;; args) case $line[1] in search) _message "pattern" ;; list|show) _deb_packages avail ;; update|purge) # do nothing ;; *) _message "command $line[1] not available" ;; esac ;; esac } _apt-file "$@"