#compdef equery euse eclean eclean-dist eclean-pkg epkginfo eshowkw genpkgindex glsa-check revdep-rebuild # XXX: shouldn't this go to _gentoo_package? _packages () { if compset -P '(\\|)(>=|<=|<|>|=)'; then _gentoo_packages ${*/(#m)(installed|available)/${MATCH}_versions} else _gentoo_packages $* fi } _euse () { local state tmp start_args suboptions_args start_args=( {'(--help)-h','(-h)--help'}'[show help]' {'(--version)-v','(-v)--version'}'[show version]' {'(--info)-i','(-i)--info'}'[show descriptions for the given useflags]' {'(--info-installed)-I','(-I)--info-installed'}'[show descriptions for the given useflags and their current impact on the installed system]' {'(--active)-a','(-a)--active'}'[show currently active useflags and their origin]' {'(--enable)-E','(-E)--enable'}'[enable the given useflags]' {'(--disable)-D','(-D)--disable'}'[disable the given useflags]' {'(--remove)-R','(-R)--remove'}'[remove all references to the given flags from make.conf and package.use to revert to default settings]' {'(--prune)-P','(-P)--prune'}'[alias for --remove]' {'(--package)-p','(-p)--package'}'[used with -E, -D, and -R to apply to a specific package only]' ) suboptions_args=( {'(--global)-g','(-g)--global'}'[show only global use flags]' {'(--local)-l','(-l)--local'}'[show only local use flags]' ) if (( CURRENT == 2 )); then _arguments -s $start_args elif (( CURRENT == 3 )); then case "$words[2]" in -i|--info|-a|--active) _arguments -s $suboptions_args \ '*:useflags:_gentoo_packages useflag' && ret=0 ;; -E|--enable) _arguments \ '*:useflags:_gentoo_packages useflag' && ret=0 ;; -D|--disable) _arguments \ '*:active useflags:_gentoo_packages active_useflag' && ret=0 esac else _arguments \ '*:useflag:_gentoo_packages useflag' && ret=0 fi } _equery () { # Based off of X/_xauth. local state context line expl ret=1 local tmp cmd start_args common_args start_args=( {'(--nocolor)-C','(-C)--nocolor'}'[turns off colors]' {'(--no-pipe)-N','(-N)--no-pipe'}'[turn off pipe detection]' {'(--quiet)-q','(-q)--quiet'}'[minimal output]' {'(--help)-h','(-h)--help'}'[show help]' {'(--version)-V','(-V)--version'}'[show version]' ) common_args=( '(-I --exclude-installed)'{-I,--exclude-installed}'[do not search installed packages]' '(-p --portage-tree)'{-p,--portage-tree}'[also search in portage tree]' '(-o --overlay-tree)'{-o,--overlay-tree}'[also search in overlay tree]' ) _arguments -s $start_args \ '*::command:->command' && ret=0 while [[ -n "$state" ]]; do tmp="$state" state= case "$tmp" in command) if (( CURRENT == 1 )); then state=subcommands else cmd="$words[1]" curcontext="${curcontext%:*:*}:equery-${cmd}:" case "$cmd" in belongs|b) _arguments \ '(-e --early-out)'{-e,--early-out}'[stop when first match found]' \ '(-f --full-regex)'{-f,--full-regex}'[supplied query is a regex]:pattern:' \ '(-n --name-only)'{-n,--name-only}"[don't print the version]" \ '*:file:_files' && ret=0 ;; changes|c) _arguments \ '(-l --latest)'{-l,--latest}'[only display latest ChangeLog entry]' \ '(-f --full)'{-f,--full}'[display full ChangeLog entry]' \ '--limit[limit the number of entries displayed (with --full)]:number:' \ '--from[which version to display from]' \ '--to[which version to display to]' \ ':portage:_packages available' && ret=0 ;; check|k) _arguments \ '(-f --full-regex)'{-f,--full-regex}'[supplied query is a regex]:pattern:' \ '(-o --only-failures)'{-o,--only-failures}'[only display packages that do not pass]' \ ':portage:_packages installed' && ret=0 ;; depends|d) _arguments \ '(-a --all-packages)'{-a,--all-packages}'[search in all available packages (slow)]:all packages:->packages' \ '(-D --indirect)'{-D,--indirect}'[search indirect dependencies (VERY slow)]' \ '--depth[limit indirect dependency tree to specified depth]:number:' \ '*:package:_packages installed' && ret=0 ;; depgraph|g) _arguments \ '(-A --no-atom)'{-A,--no-atom}'[do not show dependency atom]' \ '(-M --no-mask)'{-M,--no-mask}'[do not show masking status]' \ '(-U --no-useflags)'{-U,--no-useflags}'[do not show USE flags]' \ '(-l --linear)'{-l,--linear}'[do not use fancy formatting]' \ ':package:_packages installed' && ret=0 ;; files|f) _arguments \ '(-m --md5sum)'{-m,--md5sum}'[include MD5 sum in output]' \ '(-s --timestamp)'{-s,--timestamp}'[include timestamp in output]' \ '(-t --type)'{-t,--type}'[include file type in output]' \ '--tree[display results in a tree (turns off other options)]' \ '--filter=[filter output]:filter(s):_values -s , '' dir obj sym dev fifo path conf cmd doc man info' \ ':installed pkgname:_packages installed' && ret=0 ;; has|a) _arguments \ $common_args \ '(-F --format)'{-F,--format}'[a format template (see man page)]:format template' \ ':KEY:' \ ':VALUE:' && ret=0 ;; hasuse|h) _arguments \ $common_args \ '(-F --format)'{-F,--format}'[specify a custom output format]:format template' \ ':useflag:_gentoo_packages useflag' && ret=0 ;; list|l) _arguments \ $common_args \ '(-d --duplicates)'{-d,--duplicates}'[list only installed duplicate packages]' \ '(-b --binpkgs-missing)'{-b,--binpkgs-missing}'[list only installed packages without a corresponding binary package]' \ '(-f --full-regex)'{-f,--full-regex}'[supplied query is a regex]:pattern:' \ '(-m --mask-reason)'{-m,--mask-reason}'[include reason for package mask]' \ '(-F --format)'{-F,--format}'[a format template (see man page)]:format template' \ ': :_guard "^--*" pattern' && ret=0 ;; meta|m) _arguments \ '(-d --description)'{-d,--description}'[show an extended package description]' \ '(-H --herd)'{-H,--herd}'[show the herd(s) for the package]' \ '(-k --keywords)'{-k,--keywords}'[show keywords for all matching package versions]' \ '(-l --license)'{-l,--license}'[show licenses for the best maching version]' \ '(-m --maintainer)'{-m,--maintainer}'[show the maintainer(s) for the package]' \ '(-S --stablreq)'{-S,--stablreq}'[show STABLEREQ arches (ccs) for all matching package versions]' \ '(-u --useflags)'{-u,--useflags}'[show per-package USE flag descriptions]' \ '(-U --upstream)'{-U,--upstream}'[show packages upstream information]' \ '(-x --xml)'{-x,--xml}'[show the plain metadata.xml file]' \ ':package:_packages available' && ret=0 ;; size|s) _arguments \ '(-b --bytes)'{-b,--bytes}'[report size in bytes]' \ '(-f --full-regex)'{-f,--full-regex}'[supplied query is a regex]:pattern:' \ ':package:_packages installed' && ret=0 ;; uses|u) _arguments \ '(-a --all)'{-a,--all}'[include non-installed packages]' \ '(-i --ignore-linguas)'{-i,--ignore-linguas}"[don't show linguas USE flags]" \ ":portage:_packages installed" && ret=0 ;; which|w) _arguments \ '(-m --include-masked)'{-m,--include-masked}'[return highest version ebuild available]' \ '(-e --ebuild)'{-e,--ebuild}'[print the ebuild]' \ ':portage:_packages available' && ret=0 ;; *) _message 'command not found' ;; esac fi ;; subcommands) tmp=( {belongs,b}'[list all packages owning file(s)]' {check,k}'[check MD5sums and timestamps of package]' {changes,c}'[shows ChangeLog for specified package]' {depends,d}'[list all packages depending on specified package]' {depgraph,g}'[display a dependency tree for package]' {files,f}'[list files owned by package]' {hasuse,h}'[list all packages with specified useflag]' {list,l}'[list all packages matching pattern]' {size,s}'[print size of files contained in package]' {uses,u}'[display USE flags for package]' {which,w}'[print full path to ebuild for package]' {has,a}'[list all packages matching ENVIRONMENT data stored in /var/db/pkg]' {keywords,y}'[display keywords for specified PKG]' {meta,m}'[display metadata about PKG]' ) _values 'equery command' $tmp && ret=0 ;; esac done } _eclean_wrapper () { local global_opts pkg_opts dist_opts global_opts=( '(-C --nocolor)'{-C,--nocolor}'[turns off colors]' '(-d,--destructive)'{-d,--destructive}'[only keep the minimum for a reinstallation]' '(-e,--exclude-file)'{-e,--exclude-file}'[path to the exclusion file]:filename:_files' '(-i,--interactive)'{-i,--interactive}'[ask confirmation before deletions]' '(-n,--package-names)'{-n,--package-names}'[protect all versions (when --destructive)]' '(-p,--pretend)'{-p,--pretend}'[only display what would be cleaned]' '(-q,--quiet)'{-q,--quiet}'[minimal output]' '(-t,--time-limit)'{-t,--time-limit}'[don’t delete files modified since