diff options
-rw-r--r-- | src/_eselect | 322 | ||||
-rw-r--r-- | src/_gcc-config | 35 | ||||
-rw-r--r-- | src/_genlop | 173 | ||||
-rw-r--r-- | src/_gentoo_packages | 446 | ||||
-rw-r--r-- | src/_gentoolkit | 577 | ||||
-rw-r--r-- | src/_layman | 74 | ||||
-rw-r--r-- | src/_openrc | 150 | ||||
-rw-r--r-- | src/_portage | 466 | ||||
-rw-r--r-- | src/_portage_utils | 466 |
9 files changed, 1355 insertions, 1354 deletions
diff --git a/src/_eselect b/src/_eselect index c012955..21d0d09 100644 --- a/src/_eselect +++ b/src/_eselect @@ -1,197 +1,199 @@ #compdef eselect common_values=( - "help[Display help text]" - "usage[Display usage information]" - "version[Display version information]" + "help[Display help text]" + "usage[Display usage information]" + "version[Display version information]" ) _eselect_env () { - if (( $words[(I)(update)] )); then - _values "update options" \ - "makelinks[force updating of links]" \ - "noldconfig[Do not alter the ld.so cache or configuration]" && return 0 - fi - _values "env options" $common_values \ - 'update[Collect environment variables from all scripts in /etc/env.d/]' && return 0 + if (( $words[(I)(update)] )); then + _values "update options" \ + "makelinks[force updating of links]" \ + "noldconfig[Do not alter the ld.so cache or configuration]" && return 0 + fi + _values "env options" $common_values \ + 'update[Collect environment variables from all scripts in /etc/env.d/]' && return 0 } _eselect_binutils () { - local binutilslist - if (( $words[(I)(set)] )); then - binutilslist=(${(f)"$(eselect --brief --color=no binutils list)"}) - _values "available binutils version" $binutilslist[@] && return 0 - fi - _values "binutils options" $common_values \ - "list[List all installed version of binutils]" \ - "show[Print the currently active binutils version]" \ - "set[Activate one of the installed binutils]" && return 0 + local binutilslist + if (( $words[(I)(set)] )); then + binutilslist=(${(f)"$(eselect --brief --color=no binutils list)"}) + _values "available binutils version" $binutilslist[@] && return 0 + fi + _values "binutils options" $common_values \ + "list[List all installed version of binutils]" \ + "show[Print the currently active binutils version]" \ + "set[Activate one of the installed binutils]" && return 0 } _eselect_kernel () { - local kernellist - if (( $words[(I)(set)] )); then - kernellist=(${(f)"$(eselect --brief --color=no kernel list)"}) - _values "available kernel version" $kernellist[@] && return 0 - fi - _values "kernel options" $common_values \ - "list[List available kernel symlink targets]" \ - "show[Show the current kernel symlink]" \ - "set[Set a new kernel symlink target]" && return 0 + local kernellist + if (( $words[(I)(set)] )); then + kernellist=(${(f)"$(eselect --brief --color=no kernel list)"}) + _values "available kernel version" $kernellist[@] && return 0 + fi + _values "kernel options" $common_values \ + "list[List available kernel symlink targets]" \ + "show[Show the current kernel symlink]" \ + "set[Set a new kernel symlink target]" && return 0 } _eselect_ctags () { - local ctagslist - if (( $words[(I)(set)] )); then - ctagslist=(${(f)"$(eselect --brief --color=no ctags list)"}) - _values "available ctags version" $ctagslist[@] && return 0 - fi - _values "ctags options" $common_values \ - "list[List available ctags symlink targets]" \ - "show[Show the current target of the ctags symlink]" \ - "update[Automatically update the ctags symlink]" \ - "set[Set a new ctags symlink target]" && return 0 + local ctagslist + if (( $words[(I)(set)] )); then + ctagslist=(${(f)"$(eselect --brief --color=no ctags list)"}) + _values "available ctags version" $ctagslist[@] && return 0 + fi + _values "ctags options" $common_values \ + "list[List available ctags symlink targets]" \ + "show[Show the current target of the ctags symlink]" \ + "update[Automatically update the ctags symlink]" \ + "set[Set a new ctags symlink target]" && return 0 } _eselect_profile () { - local profilelist - if (( $words[(I)(set)] )); then - profilelist=(${${(f)"$(eselect --brief --color=no profile list)"}/:/\\:}) - _values -w "available profiles" $profilelist[@] \ - "--force[Forcibly set the symlink]" && return 0 - fi - _values "profile options" $common_values \ - "list[List available profile symlink targets]" \ - "show[Show the current make.profile symlink]" \ - "set[Set a new profile symlink target]" && return 0 + local profilelist + if (( $words[(I)(set)] )); then + profilelist=(${${(f)"$(eselect --brief --color=no profile list)"}/:/\\:}) + _values -w "available profiles" $profilelist[@] \ + "--force[Forcibly set the symlink]" && return 0 + fi + _values "profile options" $common_values \ + "list[List available profile symlink targets]" \ + "show[Show the current make.profile symlink]" \ + "set[Set a new profile symlink target]" && return 0 } _eselect_fontconfig () { - local fclistenabled fclistdisabled - if (( $words[(I)(enable)] )); then - fclistdisabled=(${${${${(M)${(f)"$(eselect --color=no fontconfig list)"}## *}#*\*}// \**/}//( \[*\] | \[*\] )/}) - _values -w ".conf to enable" $fclistdisabled[@] && return 0 - elif (( $words[(I)(disable)] )); then - fclistenabled=(${${${(M)${(M)${(f)"$(eselect --color=no fontconfig list)"}## *}#*\*}// \**/}//( \[*\] | \[*\] )/}) - _values -w ".conf to disable" $fclistenabled[@] && return 0 - fi - _values "fontconfig options" $common_values \ - "list[List available fontconfig .conf files]" \ - "disable[Disable specified fontconfig .conf file(s)]" \ - "enable[Enable specified fontconfig .conf file(s)]" && return 0 + local fclistenabled fclistdisabled + if (( $words[(I)(enable)] )); then + fclistdisabled=(${${${${(M)${(f)"$(eselect --color=no fontconfig list)"}## *}#*\*}// \**/}//( \[*\] | \[*\] )/}) + _values -w ".conf to enable" $fclistdisabled[@] && return 0 + elif (( $words[(I)(disable)] )); then + fclistenabled=(${${${(M)${(M)${(f)"$(eselect --color=no fontconfig list)"}## *}#*\*}// \**/}//( \[*\] | \[*\] )/}) + _values -w ".conf to disable" $fclistenabled[@] && return 0 + fi + _values "fontconfig options" $common_values \ + "list[List available fontconfig .conf files]" \ + "disable[Disable specified fontconfig .conf file(s)]" \ + "enable[Enable specified fontconfig .conf file(s)]" && return 0 } _eselect_opengl () { - local opengllist - if (( $words[(I)(set)] )); then - opengllist=(${(f)"$(eselect --brief --color=no opengl list)"}) - _values -w "opengl implementations and options" $opengllist[@] \ - "--use-old[If an implementation is already set, use that one instead]" \ - "--prefix[Set the source prefix]:path:_files -/" \ - "--dst-prefix[Set the destination prefix]:path:_files -/" \ - "--ignore-missing[Ignore missing files when setting a new implementation]" && return 0 - fi - _values "opengl options" $common_values \ - "list[List the available OpenGL implementations]" \ - "set[Select the OpenGL implementation]" \ - "show[Print the current OpenGL implementation]" && return 0 + local opengllist + if (( $words[(I)(set)] )); then + opengllist=(${(f)"$(eselect --brief --color=no opengl list)"}) + _values -w "opengl implementations and options" $opengllist[@] \ + "--use-old[If an implementation is already set, use that one instead]" \ + "--prefix[Set the source prefix]:path:_files -/" \ + "--dst-prefix[Set the destination prefix]:path:_files -/" \ + "--ignore-missing[Ignore missing files when setting a new implementation]" && return 0 + fi + _values "opengl options" $common_values \ + "list[List the available OpenGL implementations]" \ + "set[Select the OpenGL implementation]" \ + "show[Print the current OpenGL implementation]" && return 0 } _eselect_vi () { - local vilist - if (( $words[(I)(set)] )); then - vilist=(${(f)"$(eselect --brief --color=no vi list)"}) - _values -w "vi implementation" $vilist[@] && return 0 - elif (( $words[(I)(update)] )); then - _values -w "option" "--if-unset[Do not override existing implementation]" && return 0 - fi - _values "vi options" $common_values \ - "list[List available vi implementations]" \ - "set[Set a new vi implementation provider]" \ - "show[Show the current vi implementation]" \ - "update[Automatically update the vi provider]" + local vilist + if (( $words[(I)(set)] )); then + vilist=(${(f)"$(eselect --brief --color=no vi list)"}) + _values -w "vi implementation" $vilist[@] && return 0 + elif (( $words[(I)(update)] )); then + _values -w "option" "--if-unset[Do not override existing implementation]" && return 0 + fi + _values "vi options" $common_values \ + "list[List available vi implementations]" \ + "set[Set a new vi implementation provider]" \ + "show[Show the current vi implementation]" \ + "update[Automatically update the vi provider]" } _eselect_news() { - ## TODO: Normal numeric sorting. - ## I've spent many time on trying to rewrite this - ## function to normally sort (to DO NOT sort, actually) items, - ## but it growing bigger and bigger and going to be too complicated. - ## So, I (mva) either need to help to make it in the "right way". - ## Or, maybe, to completely rewrite this compdef. - - local -a newslist; - if ((CURRENT == 3)); then - _values 'news options' $stdopts[@] \ - 'list[List news items]' \ - 'count[Display number of news items]' \ - 'purge[Purge read news]' \ - 'read[Read news items]' \ - 'unread[Mark read news items as unread again]' && return 0 - elif ((CURRENT == 4)); then - if (( $words[(I)(count)] )); then - _values -w 'news' 'new[Count only new news items]' 'all[Count all news items]' && return 0 - fi - - newslist=(${${${${${${${(M)${(f)"$(eselect --color=no news list)"}## *}// \**/}/ \[/}/\] ##/\[}/%/]}/ \[/ (}/\] /) }) - - if (( $words[(I)(read)] )); then - newslist+=( "new[Read unread news items (default)]" "all[Read all news items]" "--mbox[Output in mbox format]" "--quiet[Suppress output, only change status]" "--raw[Output in raw format]" ) - fi; - - if (( $words[(I)(unread)] )); then - newslist+=( "all[Unread all news items]" ) - fi - - _values -w 'news' $newslist[@] && return 0 - fi + ## TODO: Normal numeric sorting. + ## I've spent many time on trying to rewrite this + ## function to normally sort (to DO NOT sort, actually) items, + ## but it growing bigger and bigger and going to be too complicated. + ## So, I (mva) either need to help to make it in the "right way". + ## Or, maybe, to completely rewrite this compdef. + + local -a newslist; + if ((CURRENT == 3)); then + _values 'news options' $stdopts[@] \ + 'list[List news items]' \ + 'count[Display number of news items]' \ + 'purge[Purge read news]' \ + 'read[Read news items]' \ + 'unread[Mark read news items as unread again]' && return 0 + elif ((CURRENT == 4)); then + if (( $words[(I)(count)] )); then + _values -w 'news' 'new[Count only new news items]' 'all[Count all news items]' && return 0 + fi + + newslist=(${${${${${${${(M)${(f)"$(eselect --color=no news list)"}## *}// \**/}/ \[/}/\] ##/\[}/%/]}/ \[/ (}/\] /) }) + + if (( $words[(I)(read)] )); then + newslist+=( "new[Read unread news items (default)]" "all[Read all news items]" "--mbox[Output in mbox format]" "--quiet[Suppress output, only change status]" "--raw[Output in raw format]" ) + fi; + + if (( $words[(I)(unread)] )); then + newslist+=( "all[Unread all news items]" ) + fi + + _values -w 'news' $newslist[@] && return 0 + fi } _eselect () { - local globopts modnames modopts - - globopts=( - "--brief[Make output shorter]" - "--colour=no[Disable coloured output]" - "--color=no[Disable coloured output]" - ) - modnames=(${${${(M)${(f)"$(eselect --brief --color=no modules list)"}## *}// */}// /}) - - if ((CURRENT == 2)); then - _arguments -s \ - "$globopts[@]" \ - "*:portage:_values 'eselect modules' \$modnames[@]" && return 0 - elif ((CURRENT == 3)); then - if [[ $words[2] == --colour=no || $words[2] == --color=no ]]; then - _arguments -s \ - "*:portage:_values 'eselect modules' \$modnames[@]" && return 0 - elif (( $modnames[(I)$words[2]] )); then - if [[ "$words[2]" == (env|binutils|kernel|ctags|profile|fontconfig|opengl|vi|news) ]]; then - _eselect_$words[2] "$@" - else - modopts=(${${${(M)${(f)"$(eselect --brief --color=no $words[2] usage)"}## *}// */}// /}) - _arguments -s \ - "*:portage:_values 'eselect $words[2] options' \$modopts[@]" && return 0 - fi - fi - elif ((CURRENT >= 4)); then - if (( $words[(I)(--color=no|--colour=no)] )); then - if (( $modnames[(I)$words[3]] )); then - if [[ "$words[3]" == (env|binutils|kernel|ctags|profile|fontconfig|opengl|vi|news) ]]; then - _eselect_$words[3] "$@" - else - modopts=(${${${${(M)${(f)"$(eselect --brief --color=no $words[3] usage)"}## *}// */}// /}// *}) - _arguments -s \ - "*:portage:_values 'eselect $words[3] options' \$modopts[@]" && return 0 - fi - fi - else - if (( $modnames[(I)$words[2]] )); then - (( $+functions[_eselect_$words[2]] )) && _eselect_$words[2] "$@" - fi - fi - fi + local globopts modnames modopts + + globopts=( + "--brief[Make output shorter]" + "--colour=no[Disable coloured output]" + "--color=no[Disable coloured output]" + ) + modnames=(${${${(M)${(f)"$(eselect --brief --color=no modules list)"}## *}// */}// /}) + + if ((CURRENT == 2)); then + _arguments -s \ + "$globopts[@]" \ + "*:portage:_values 'eselect modules' \$modnames[@]" && return 0 + elif ((CURRENT == 3)); then + if [[ $words[2] == --colour=no || $words[2] == --color=no ]]; then + _arguments -s \ + "*:portage:_values 'eselect modules' \$modnames[@]" && return 0 + elif (( $modnames[(I)$words[2]] )); then + if [[ "$words[2]" == (env|binutils|kernel|ctags|profile|fontconfig|opengl|vi|news) ]]; then + _eselect_$words[2] "$@" + else + modopts=(${${${(M)${(f)"$(eselect --brief --color=no $words[2] usage)"}## *}// */}// /}) + _arguments -s \ + "*:portage:_values 'eselect $words[2] options' \$modopts[@]" && return 0 + fi + fi + elif ((CURRENT >= 4)); then + if (( $words[(I)(--color=no|--colour=no)] )); then + if (( $modnames[(I)$words[3]] )); then + if [[ "$words[3]" == (env|binutils|kernel|ctags|profile|fontconfig|opengl|vi|news) ]]; then + _eselect_$words[3] "$@" + else + modopts=(${${${${(M)${(f)"$(eselect --brief --color=no $words[3] usage)"}## *}// */}// /}// *}) + _arguments -s \ + "*:portage:_values 'eselect $words[3] options' \$modopts[@]" && return 0 + fi + fi + else + if (( $modnames[(I)$words[2]] )); then + (( $+functions[_eselect_$words[2]] )) && _eselect_$words[2] "$@" + fi + fi + fi } _eselect "$@" + +# vim: set et sw=2 sts=2 ts=2 ft=zsh: diff --git a/src/_gcc-config b/src/_gcc-config index 3b0fcf3..ce61113 100644 --- a/src/_gcc-config +++ b/src/_gcc-config @@ -1,27 +1,30 @@ #compdef gcc-config -#Author oberyno <oberyno@gmail.com> + +# Author oberyno <oberyno@gmail.com> local arguments arguments=( - '(- :)'{--use-old,-O}'[use the old profile if one was selected]' - '(- :)'{--use-portage-chost,-P}'[only set profile if its CHOST matches /etc/{portage/}make.conf]:profiles:_gcc_profile' - '(- :)'{--get-current-profile,-c}'[print current used gcc profile]' - '(- :)'{--list-profiles,-l}'[print a list of available profiles]' - '(- :)'{--print-environ,-E}'[print environment of the given/current profile]:profiles:_gcc_profile' - '(- :)'{--get-bin-path,-B}'[print binary path of given/current profile]:profiles:_gcc_profile' - '(- :)'{--get-lib-path,-L}'[print library path of given/current profile]:profiles:_gcc_profile' - '(- :)'{--get-stdcxx-incdir,-X}'[print g++ include path of given/current profile]:profiles:_gcc_profile' - '(- :)'{--help,-h}'[show help]' - '(- :)'{--version,-v}'[show version info]' - '(- :):profiles:_gcc_profile' + '(- :)'{--use-old,-O}'[use the old profile if one was selected]' + '(- :)'{--use-portage-chost,-P}'[only set profile if its CHOST matches /etc/{portage/}make.conf]:profiles:_gcc_profile' + '(- :)'{--get-current-profile,-c}'[print current used gcc profile]' + '(- :)'{--list-profiles,-l}'[print a list of available profiles]' + '(- :)'{--print-environ,-E}'[print environment of the given/current profile]:profiles:_gcc_profile' + '(- :)'{--get-bin-path,-B}'[print binary path of given/current profile]:profiles:_gcc_profile' + '(- :)'{--get-lib-path,-L}'[print library path of given/current profile]:profiles:_gcc_profile' + '(- :)'{--get-stdcxx-incdir,-X}'[print g++ include path of given/current profile]:profiles:_gcc_profile' + '(- :)'{--help,-h}'[show help]' + '(- :)'{--version,-v}'[show version info]' + '(- :):profiles:_gcc_profile' ) _gcc_profile(){ - local profile - profile=(${(f)"$(_call_program gcc-installed RC_NOCOLOR=yes gcc-config --list-profiles)"}) - profile=${${profile/\[([^]]*)\]/}/\*} - _tags profile && { compadd "$@" -k profile || compadd "$@" ${(kv)=profile} } + local profile + profile=(${(f)"$(_call_program gcc-installed RC_NOCOLOR=yes gcc-config --list-profiles)"}) + profile=${${profile/\[([^]]*)\]/}/\*} + _tags profile && { compadd "$@" -k profile || compadd "$@" ${(kv)=profile} } } _arguments $arguments + +# vim: set et sw=2 sts=2 ts=2 ft=zsh: diff --git a/src/_genlop b/src/_genlop index 6e817fd..92c844b 100644 --- a/src/_genlop +++ b/src/_genlop @@ -1,6 +1,7 @@ #compdef genlop #genlop 0.30.8 + _genlop () { local prev1="$words[CURRENT-1]" prev2="$words[CURRENT-2]" days months arg single state lstate days=(monday tuesday wednesday thursday friday saturday sunday) @@ -8,96 +9,98 @@ months=(january february march april may june july august september october nove arg=( --current -c --time -t --gmt -g --info -i --file -f --rsync -r --unmerge -u --date --search -s --list -l ) single=( --current -c --pretend -p --help -h --version -v ) - [[ ${prev2} == (1st|2nd|3rd|4th|5th) ]] && - compadd in\ $months && return 0 - [[ ${prev1} == ([2-9]|[1-9][0-9]*) && ${prev2} != \ - (january|february|march|april|may|june|july|august|september|october|november|december) ]] && - _values '' 'days ago' 'months ago' 'years ago' 'weeks ago' && return 0 - [[ ${prev1} == (1) && ${prev2} != \ - (january|february|march|april|may|june|july|august|september|october|november|december) ]] && - _values '' 'day ago' 'month ago' 'year ago' 'week ago' && return 0 + [[ ${prev2} == (1st|2nd|3rd|4th|5th) ]] && + compadd in\ $months && return 0 + [[ ${prev1} == ([2-9]|[1-9][0-9]*) && ${prev2} != \ + (january|february|march|april|may|june|july|august|september|october|november|december) ]] && + _values '' 'days ago' 'months ago' 'years ago' 'weeks ago' && return 0 + [[ ${prev1} == (1) && ${prev2} != \ + (january|february|march|april|may|june|july|august|september|october|november|december) ]] && + _values '' 'day ago' 'month ago' 'year ago' 'week ago' && return 0 - case "$prev1" in - last) - _values '' month week - compadd $days && return 0 - ;; - 1st|2nd|3rd|4th|5th) - compadd $days && return 0 - ;; - january|february|march|april|may|june|july|august|september|october|november|december) - compadd {1..31} && return 0 - ;; - --date) - _message 'enter number for more options or use mm/dd/yyyy format' - _values '' \ - last yesterday 1st 2nd 3rd 4th 5th - _alternative \ - '*:*:_days' '*:*:_months' && return 0 - ;; - --file|-f) - _arguments '*:logfile:_files' && return 0 - ;; - *) - _arguments \ - "($single $arg *)"{--current,-c}"[display the current merge in action]" \ - "($single)*--date[specify date of event]:date:->date" \ - "($single)*-f[specify the logfile to use]:logfile:_files" \ - "($single --gmt -g)"{--gmt,-g}"[display time in GMT/UTC format (default is local time)]" \ - "($single $arg *)"{--help,-h}"[display help information]" \ - "($single --info -i --list -l)"{--info,-i}"[print brief summary about installed ebuild]" \ - "($single --search -s --info -i --list -l *)"{--list,-l}"[list merge history]" \ - "(--nocolor -n)"{--nocolor,-n}"[disable colored output]" \ - "($single $arg *)"{--pretend,-p}"[estimate build time of a piped emerge -p]" \ - "($single --search -s --info -i --time -t --unmerge -u --rsync -r *)"{--rsync,-r}"[display rsync history]" \ - "($single --rsync -r --search -s --list -l *)"{--search,-s}"[select ebuilds matching the provided regular expression]:pattern:" \ - "($single --time -t)"{--time,-t}"[display merge time]" \ - "($single --rsync -r --unmerge -u)"{--unmerge,-u}"[display when packages have been unmerged]" \ - "($single $arg *)"{--version,-v}"[display version information]" \ - "($single)*:package:_gentoo_packages available" - ;; - esac + case "$prev1" in + last) + _values '' month week + compadd $days && return 0 + ;; + 1st|2nd|3rd|4th|5th) + compadd $days && return 0 + ;; + january|february|march|april|may|june|july|august|september|october|november|december) + compadd {1..31} && return 0 + ;; + --date) + _message 'enter number for more options or use mm/dd/yyyy format' + _values '' \ + last yesterday 1st 2nd 3rd 4th 5th + _alternative \ + '*:*:_days' '*:*:_months' && return 0 + ;; + --file|-f) + _arguments '*:logfile:_files' && return 0 + ;; + *) + _arguments \ + "($single $arg *)"{--current,-c}"[display the current merge in action]" \ + "($single)*--date[specify date of event]:date:->date" \ + "($single)*-f[specify the logfile to use]:logfile:_files" \ + "($single --gmt -g)"{--gmt,-g}"[display time in GMT/UTC format (default is local time)]" \ + "($single $arg *)"{--help,-h}"[display help information]" \ + "($single --info -i --list -l)"{--info,-i}"[print brief summary about installed ebuild]" \ + "($single --search -s --info -i --list -l *)"{--list,-l}"[list merge history]" \ + "(--nocolor -n)"{--nocolor,-n}"[disable colored output]" \ + "($single $arg *)"{--pretend,-p}"[estimate build time of a piped emerge -p]" \ + "($single --search -s --info -i --time -t --unmerge -u --rsync -r *)"{--rsync,-r}"[display rsync history]" \ + "($single --rsync -r --search -s --list -l *)"{--search,-s}"[select ebuilds matching the provided regular expression]:pattern:" \ + "($single --time -t)"{--time,-t}"[display merge time]" \ + "($single --rsync -r --unmerge -u)"{--unmerge,-u}"[display when packages have been unmerged]" \ + "($single $arg *)"{--version,-v}"[display version information]" \ + "($single)*:package:_gentoo_packages available" + ;; + esac - while [[ -n "$state" ]]; do - lstate=$state - state='' - case "$lstate" in - date) _message 'enter number for more options or use mm/dd/yyyy format' - _values '' \ - last yesterday 1st 2nd 3rd 4th 5th - _alternative \ - ':*:_days' ':*:_months' && return 0 - ;; - esac - done + while [[ -n "$state" ]]; do + lstate=$state + state='' + case "$lstate" in + date) _message 'enter number for more options or use mm/dd/yyyy format' + _values '' \ + last yesterday 1st 2nd 3rd 4th 5th + _alternative \ + ':*:_days' ':*:_months' && return 0 + ;; + esac + done } _days() { - local m="monday" t="tuesday" w="wednesday" T="thursday" f="friday" s="saturday" S="sunday" - local day=$(date +%u) - if [[ ${day} == 1 ]] then compadd $m - elif [[ ${day} == 2 ]] then compadd $m $t - elif [[ ${day} == 3 ]] then compadd $m $t $w - elif [[ ${day} == 4 ]] then compadd $m $t $w $T - elif [[ ${day} == 5 ]] then compadd $m $t $w $T $f - elif [[ ${day} == 6 ]] then compadd $m $t $w $T $f $s - elif [[ ${day} == 7 ]] then compadd $m $t $w $T $f $s $S - fi + local m="monday" t="tuesday" w="wednesday" T="thursday" f="friday" s="saturday" S="sunday" + local day=$(date +%u) + if [[ ${day} == 1 ]] then compadd $m + elif [[ ${day} == 2 ]] then compadd $m $t + elif [[ ${day} == 3 ]] then compadd $m $t $w + elif [[ ${day} == 4 ]] then compadd $m $t $w $T + elif [[ ${day} == 5 ]] then compadd $m $t $w $T $f + elif [[ ${day} == 6 ]] then compadd $m $t $w $T $f $s + elif [[ ${day} == 7 ]] then compadd $m $t $w $T $f $s $S + fi } _months() { - local j="january" f="february" m="march" a="april" M="may" ju="june" J="july" A="august" s="september" o="october" n="november" d="december" - local month=$(date +%m) - if [[ ${month} == 01 ]] then compadd $j - elif [[ ${month} == 02 ]] then compadd $j $f - elif [[ ${month} == 03 ]] then compadd $j $f $m - elif [[ ${month} == 04 ]] then compadd $j $f $m $a - elif [[ ${month} == 05 ]] then compadd $j $f $m $a $M - elif [[ ${month} == 06 ]] then compadd $j $f $m $a $M $ju - elif [[ ${month} == 07 ]] then compadd $j $f $m $a $M $ju $J - elif [[ ${month} == 08 ]] then compadd $j $f $m $a $M $ju $J $A - elif [[ ${month} == 09 ]] then compadd $j $f $m $a $M $ju $J $A $s - elif [[ ${month} == 10 ]] then compadd $j $f $m $a $M $ju $J $A $s $o - elif [[ ${month} == 11 ]] then compadd $j $f $m $a $M $ju $J $A $s $o $n - elif [[ ${month} == 12 ]] then compadd $j $f $m $a $M $ju $J $A $s $o $n $d - fi + local j="january" f="february" m="march" a="april" M="may" ju="june" J="july" A="august" s="september" o="october" n="november" d="december" + local month=$(date +%m) + if [[ ${month} == 01 ]] then compadd $j + elif [[ ${month} == 02 ]] then compadd $j $f + elif [[ ${month} == 03 ]] then compadd $j $f $m + elif [[ ${month} == 04 ]] then compadd $j $f $m $a + elif [[ ${month} == 05 ]] then compadd $j $f $m $a $M + elif [[ ${month} == 06 ]] then compadd $j $f $m $a $M $ju + elif [[ ${month} == 07 ]] then compadd $j $f $m $a $M $ju $J + elif [[ ${month} == 08 ]] then compadd $j $f $m $a $M $ju $J $A + elif [[ ${month} == 09 ]] then compadd $j $f $m $a $M $ju $J $A $s + elif [[ ${month} == 10 ]] then compadd $j $f $m $a $M $ju $J $A $s $o + elif [[ ${month} == 11 ]] then compadd $j $f $m $a $M $ju $J $A $s $o $n + elif [[ ${month} == 12 ]] then compadd $j $f $m $a $M $ju $J $A $s $o $n $d + fi } + +# vim: set et sw=2 sts=2 ts=2 ft=zsh: diff --git a/src/_gentoo_packages b/src/_gentoo_packages index da770b2..fd1dbcd 100644 --- a/src/_gentoo_packages +++ b/src/_gentoo_packages @@ -6,194 +6,193 @@ setopt extendedglob bareglobqual # inspired by _deb_packages #Usage: _gentoo_packages installed|available|installed_versions|available_versions|binary|category|useflag - _portdir() { - local mainreponame mainrepopath overlayname overlaypath + local mainreponame mainrepopath overlayname overlaypath - if [[ -e /usr/share/portage/config/repos.conf ]]; then - if [[ ${1} == "-o" ]]; then - for overlayname in $(_parsereposconf -l); do - overlaypath+=($(_parsereposconf ${overlayname} location)) - done + if [[ -e /usr/share/portage/config/repos.conf ]]; then + if [[ ${1} == "-o" ]]; then + for overlayname in $(_parsereposconf -l); do + overlaypath+=($(_parsereposconf ${overlayname} location)) + done - source /etc/make.conf 2>/dev/null - source /etc/portage/make.conf 2>/dev/null + source /etc/make.conf 2>/dev/null + source /etc/portage/make.conf 2>/dev/null - overlaypath+=(${(@)PORTDIR_OVERLAY}) + overlaypath+=(${(@)PORTDIR_OVERLAY}) - echo "${(@u)overlaypath}" - else - mainreponame=$(_parsereposconf DEFAULT main-repo) - mainrepopath=$(_parsereposconf ${mainreponame} location) + echo "${(@u)overlaypath}" + else + mainreponame=$(_parsereposconf DEFAULT main-repo) + mainrepopath=$(_parsereposconf ${mainreponame} location) - echo "${mainrepopath}" - fi + echo "${mainrepopath}" + fi + else + source /usr/share/portage/config/make.globals 2>/dev/null + source /etc/make.conf 2>/dev/null + source /etc/portage/make.conf 2>/dev/null + + if [[ ${1} == "-o" ]]; then + echo "${(@u)PORTDIR_OVERLAY}" else - source /usr/share/portage/config/make.globals 2>/dev/null - source /etc/make.conf 2>/dev/null - source /etc/portage/make.conf 2>/dev/null - - if [[ ${1} == "-o" ]]; then - echo "${(@u)PORTDIR_OVERLAY}" - else - echo "${PORTDIR}" - fi + echo "${PORTDIR}" fi + fi } _parsereposconf() { - local v f insection section arr - - for f in /usr/share/portage/config/repos.conf \ - /etc/portage/repos.conf \ - /etc/portage/repos.conf/*.conf; do - - [[ -f ${f} ]] || continue - insection=0 - declare -A arr - IFS='= ' - - while read -r name value; do - [[ -z ${name} || ${name} == '#'* ]] && continue - - if [[ (${name} == '['*']') && (-z ${value}) ]]; then - value=${name//(\]|\[)} - name="section" - fi - arr[${name}]=${value} - - if [[ ${insection} == 1 && ${name} == "section" ]]; then - break - elif [[ ${name} == "section" ]]; then - [[ ${value} == ${1} ]] && insection=1 - secname+=(${value}) - elif [[ ${insection} == 1 ]]; then - if [[ ${name} == ${2} ]]; then - v=${value} - fi - fi - continue - done < ${f} - done - - if [[ ${1} == "-l" ]]; then - echo "${(@)secname}" - else - echo "${v}" - fi + local v f insection section arr + + for f in /usr/share/portage/config/repos.conf \ + /etc/portage/repos.conf \ + /etc/portage/repos.conf/*.conf; do + + [[ -f ${f} ]] || continue + insection=0 + declare -A arr + IFS='= ' + + while read -r name value; do + [[ -z ${name} || ${name} == '#'* ]] && continue + + if [[ (${name} == '['*']') && (-z ${value}) ]]; then + value=${name//(\]|\[)} + name="section" + fi + arr[${name}]=${value} + + if [[ ${insection} == 1 && ${name} == "section" ]]; then + break + elif [[ ${name} == "section" ]]; then + [[ ${value} == ${1} ]] && insection=1 + secname+=(${value}) + elif [[ ${insection} == 1 ]]; then + if [[ ${name} == ${2} ]]; then + v=${value} + fi + fi + continue + done < ${f} + done + + if [[ ${1} == "-l" ]]; then + echo "${(@)secname}" + else + echo "${v}" + fi } _parsesetsconf() { - [[ -d ${1} ]] || continue - - local v f places sections setsconf insection section arr - - if [[ -d ${1}/sets ]]; then - setsconf=(${1}/sets/*.conf(N)) - [[ (($#setsconf > 0)) ]] && places=(${setsconf}) - elif [[ -f ${1}/sets.conf ]]; then - places=(${1}/sets.conf) - fi - - for f in ${(@)places}; do - if [[ -r ${f} ]]; then - insection=0 - declare -A arr - IFS='= ' - while read -r name value; do - [[ -z ${name} || ${name} == '#'* ]] && continue - - if [[ (${name} == '['*']') && (-z ${value}) ]]; then - value=${name//(\]|\[)} - name="section" - fi - arr[${name}]=${value} - - if [[ ${insection} == 1 && ${name} == "section" ]]; then - [[ ${2} == "sets" ]] && [[ ! ${value} =~ "sets" ]] && sections+=(${value}) - insection=0 - elif [[ ${name} == "section" ]]; then - [[ ${value} =~ "${1:t} sets" ]] && insection=1 - [[ ${2} == "sets" ]] && [[ ! ${value} =~ "sets" ]] && sections+=(${value}) - elif [[ ${insection} == 1 ]]; then - [[ ${2} == "sets" ]] && continue - if [[ ${name} == "directory" ]]; then - v=${value} - fi - fi - continue - done < ${f} + [[ -d ${1} ]] || continue + + local v f places sections setsconf insection section arr + + if [[ -d ${1}/sets ]]; then + setsconf=(${1}/sets/*.conf(N)) + [[ (($#setsconf > 0)) ]] && places=(${setsconf}) + elif [[ -f ${1}/sets.conf ]]; then + places=(${1}/sets.conf) + fi + + for f in ${(@)places}; do + if [[ -r ${f} ]]; then + insection=0 + declare -A arr + IFS='= ' + while read -r name value; do + [[ -z ${name} || ${name} == '#'* ]] && continue + + if [[ (${name} == '['*']') && (-z ${value}) ]]; then + value=${name//(\]|\[)} + name="section" fi - done - - if [[ ${2} == "sets" ]]; then - [[ ((${#sections} > 0)) ]] && echo ${(@)sections} - else - [[ ((${#v} > 0)) ]] && echo ${v:t} + arr[${name}]=${value} + + if [[ ${insection} == 1 && ${name} == "section" ]]; then + [[ ${2} == "sets" ]] && [[ ! ${value} =~ "sets" ]] && sections+=(${value}) + insection=0 + elif [[ ${name} == "section" ]]; then + [[ ${value} =~ "${1:t} sets" ]] && insection=1 + [[ ${2} == "sets" ]] && [[ ! ${value} =~ "sets" ]] && sections+=(${value}) + elif [[ ${insection} == 1 ]]; then + [[ ${2} == "sets" ]] && continue + if [[ ${name} == "directory" ]]; then + v=${value} + fi + fi + continue + done < ${f} fi + done + + if [[ ${2} == "sets" ]]; then + [[ ((${#sections} > 0)) ]] && echo ${(@)sections} + else + [[ ((${#v} > 0)) ]] && echo ${v:t} + fi } _gentoo_packages_update_installed_sets() { - local sets - sets=($(</var/lib/portage/world_sets)) - if [[ ((${#sets} > 0)) ]]; then - _wanted installed_sets expl 'installed set' compadd "$@" "${(o@)^sets}" - fi + local sets + sets=($(</var/lib/portage/world_sets)) + if [[ ((${#sets} > 0)) ]]; then + _wanted installed_sets expl 'installed set' compadd "$@" "${(o@)^sets}" + fi } _gentoo_packages_update_available_sets() { - trees=($(_portdir -o) /etc/portage /usr/share/portage/config) - for PORTDIR in ${(@)trees}; do - if [[ -d ${PORTDIR} ]]; then - setsdir="$(_parsesetsconf ${PORTDIR})" - [[ ! -z "${setsdir}" ]] && setspath="${PORTDIR}/${setsdir}" || setspath="${PORTDIR}/sets" - if [[ -d "${setspath}" ]]; then - setsfiles=(${setspath}/*~*.conf(N)) - for set in ${setsfiles[@]}; do - sets+=(${set}(:t)) - done - sets+=($(_parsesetsconf ${PORTDIR} sets)) - fi - fi - done - if [[ ((${#sets} > 0)) ]]; then - _wanted available_sets expl 'available set' compadd "$@" "@${(o@)^sets}" + trees=($(_portdir -o) /etc/portage /usr/share/portage/config) + for PORTDIR in ${(@)trees}; do + if [[ -d ${PORTDIR} ]]; then + setsdir="$(_parsesetsconf ${PORTDIR})" + [[ ! -z "${setsdir}" ]] && setspath="${PORTDIR}/${setsdir}" || setspath="${PORTDIR}/sets" + if [[ -d "${setspath}" ]]; then + setsfiles=(${setspath}/*~*.conf(N)) + for set in ${setsfiles[@]}; do + sets+=(${set}(:t)) + done + sets+=($(_parsesetsconf ${PORTDIR} sets)) + fi fi + done + if [[ ((${#sets} > 0)) ]]; then + _wanted available_sets expl 'available set' compadd "$@" "@${(o@)^sets}" + fi } # Completion function to show useflags. _gentoo_packages_update_useflag(){ - local flags trees + local flags trees - flags=() - trees=($(_portdir) $(_portdir -o)) + flags=() + trees=($(_portdir) $(_portdir -o)) - for PORTDIR in ${trees[@]}; do - [[ -r ${PORTDIR}/profiles/use.desc ]] && - flags+=(${${(M)${(f)"$(<$PORTDIR/profiles/use.desc)"}:#* - *}%% - *}) - [[ -r ${PORTDIR}/profiles/use.local.desc ]] && - flags+=(${${${(M)${(f)"$(<$PORTDIR/profiles/use.local.desc)"}#* - *}%% - *}#*:}) - done + for PORTDIR in ${trees[@]}; do + [[ -r ${PORTDIR}/profiles/use.desc ]] && + flags+=(${${(M)${(f)"$(<$PORTDIR/profiles/use.desc)"}:#* - *}%% - *}) + [[ -r ${PORTDIR}/profiles/use.local.desc ]] && + flags+=(${${${(M)${(f)"$(<$PORTDIR/profiles/use.local.desc)"}#* - *}%% - *}#*:}) + done - compadd $flags + compadd $flags } _gentoo_packages_update_active_useflag(){ - local flags USE - var=USE - [[ -z ${(P)var} && -r /etc/portage/make.conf ]] && - local $var="`. /etc/portage/make.conf 2>/dev/null; echo ${(P)var}`" - [[ -z ${(P)var} && -r /etc/make.conf ]] && - local $var="`. /etc/make.conf 2>/dev/null; echo ${(P)var}`" - flags=(${${${=USE}%-*}%\\*}) - compadd $flags + local flags USE + var=USE + [[ -z ${(P)var} && -r /etc/portage/make.conf ]] && + local $var="`. /etc/portage/make.conf 2>/dev/null; echo ${(P)var}`" + [[ -z ${(P)var} && -r /etc/make.conf ]] && + local $var="`. /etc/make.conf 2>/dev/null; echo ${(P)var}`" + flags=(${${${=USE}%-*}%\\*}) + compadd $flags } _gentoo_packages_update_category(){ - local trees category + local trees category - trees=($(_portdir) $(_portdir -o)) - category=( $trees/*-*(/:t) ) - _wanted cat_packages expl 'category' compadd "$@" $category + trees=($(_portdir) $(_portdir -o)) + category=( $trees/*-*(/:t) ) + _wanted cat_packages expl 'category' compadd "$@" $category } _gentoo_packages_update_installed(){ @@ -209,101 +208,102 @@ _gentoo_packages_update_installed(){ } _gentoo_packages_update_installed_versions(){ - local installed_list installed_portage expl + local installed_list installed_portage expl - installed_portage=(/var/db/pkg/*-*/*) - _wanted packages expl 'package' compadd "$@" ${installed_portage:t} + installed_portage=(/var/db/pkg/*-*/*) + _wanted packages expl 'package' compadd "$@" ${installed_portage:t} - installed_list=(${installed_portage##*/pkg/}) - _wanted cat_packages expl 'category/package' _multi_parts "$@" / installed_list + installed_list=(${installed_portage##*/pkg/}) + _wanted cat_packages expl 'category/package' _multi_parts "$@" / installed_list } _gentoo_packages_update_available_pkgnames_only(){ - local trees packages + local trees packages - trees=($(_portdir) $(_portdir -o)) + trees=($(_portdir) $(_portdir -o)) - packages=($trees/*-*/*(:t)) - _wanted packages expl 'package' compadd - "${(@)packages}" + packages=($trees/*-*/*(:t)) + _wanted packages expl 'package' compadd - "${(@)packages}" } _gentoo_packages_update_available(){ - local trees category packages pkg expl - - trees=($(_portdir) $(_portdir -o)) - category=($trees/*-*(/:t)) - - packages=($trees/*-*/*(:t)) - _wanted packages expl 'package' compadd - "${(@)packages}" - - # Complete cat/pkg. _multi_parts is much to slow for such a large task, - # _sep_parts removes the dash from gnome-<tab>, and _path_files wants to - # complete cat/pkg/files (if "files" is ignored with -F, miscfiles, etc... - # don't get completed). - if [[ $PREFIX != */* ]] ; then - _wanted cat_packages expl 'category/package' compadd -S '/' $category - else - compset -P '*/' - pkg=($trees/$IPREFIX/*(:t)) - _wanted cat_packages expl 'category/package' compadd $pkg - fi + local trees category packages pkg expl + + trees=($(_portdir) $(_portdir -o)) + category=($trees/*-*(/:t)) + + packages=($trees/*-*/*(:t)) + _wanted packages expl 'package' compadd - "${(@)packages}" + + # Complete cat/pkg. _multi_parts is much to slow for such a large task, + # _sep_parts removes the dash from gnome-<tab>, and _path_files wants to + # complete cat/pkg/files (if "files" is ignored with -F, miscfiles, etc... + # don't get completed). + if [[ $PREFIX != */* ]]; then + _wanted cat_packages expl 'category/package' compadd -S '/' $category + else + compset -P '*/' + pkg=($trees/$IPREFIX/*(:t)) + _wanted cat_packages expl 'category/package' compadd $pkg + fi } _gentoo_packages_update_available_versions(){ - local var overlay_ebuilds portage_ebuilds expl trees category - - PORTDIR=$(_portdir) - PORTDIR_OVERLAY=$(_portdir -o) - - trees=($PORTDIR $=PORTDIR_OVERLAY) - category=($trees/*-*(/:t)) - typeset -U category - - if [[ $#PREFIX -ge 1 && -z $words[(r)(--inject|-i)] ]] ; then - overlay_ebuilds=($=PORTDIR_OVERLAY/*-*/${PREFIX%%-[0-9]#*}*/*.ebuild(:t:r) ) - portage_ebuilds=($PORTDIR/metadata/cache/*-*/${PREFIX%%-[0-9]#*}*(:t)) - _wanted packages expl 'package' compadd $portage_ebuilds $overlay_ebuilds - fi - pkg=( $trees/${PREFIX%%/*}/*/*.ebuild(:t:r) ) - _wanted cat_packages expl 'category/package' _sep_parts category / pkg + local var overlay_ebuilds portage_ebuilds expl trees category + + PORTDIR=$(_portdir) + PORTDIR_OVERLAY=$(_portdir -o) + + trees=($PORTDIR $=PORTDIR_OVERLAY) + category=($trees/*-*(/:t)) + typeset -U category + + if [[ $#PREFIX -ge 1 && -z $words[(r)(--inject|-i)] ]]; then + overlay_ebuilds=($=PORTDIR_OVERLAY/*-*/${PREFIX%%-[0-9]#*}*/*.ebuild(:t:r) ) + portage_ebuilds=($PORTDIR/metadata/cache/*-*/${PREFIX%%-[0-9]#*}*(:t)) + _wanted packages expl 'package' compadd $portage_ebuilds $overlay_ebuilds + fi + pkg=( $trees/${PREFIX%%/*}/*/*.ebuild(:t:r) ) + _wanted cat_packages expl 'category/package' _sep_parts category / pkg } #Function to show tbz2 files available _gentoo_packages_update_binary() { - [[ -z $PKGDIR && -r /etc/portage/make.conf ]] && - local PKGDIR="`. /etc/portage/make.conf 2>/dev/null; echo $PKGDIR`" - [[ -z $PKGDIR && -r /etc/make.conf ]] && - local PKGDIR="`. /etc/make.conf 2>/dev/null; echo $PKGDIR`" - [[ -z $PKGDIR && -r /usr/share/portage/config/make.globals ]] && - local PKGDIR="`. /usr/share/portage/config/make.globals 2>/dev/null; echo $PKGDIR`" - - # this doesn't take care of ${PORTAGE_BINHOST}. If Gentoo official - # binary mirror will be available we should rewrite it accordingly. - _path_files -g \*.tbz2 -W "$PKGDIR/All" + [[ -z $PKGDIR && -r /etc/portage/make.conf ]] && + local PKGDIR="`. /etc/portage/make.conf 2>/dev/null; echo $PKGDIR`" + [[ -z $PKGDIR && -r /etc/make.conf ]] && + local PKGDIR="`. /etc/make.conf 2>/dev/null; echo $PKGDIR`" + [[ -z $PKGDIR && -r /usr/share/portage/config/make.globals ]] && + local PKGDIR="`. /usr/share/portage/config/make.globals 2>/dev/null; echo $PKGDIR`" + + # this doesn't take care of ${PORTAGE_BINHOST}. If Gentoo official + # binary mirror will be available we should rewrite it accordingly. + _path_files -g \*.tbz2 -W "$PKGDIR/All" } _gentoo_packages () { - local command="$argv[$#]" expl cachevar pkgset update_policy - zstyle -s ":completion:*:*:$service:*" cache-policy update_policy - if [[ -z "$update_policy" ]]; then - zstyle ":completion:*:*:$service:*" cache-policy _gentoo_cache_policy - fi - [[ "$command" == (installed(_versions|_sets|)|available(_versions|_sets|_pkgnames_only|)|binary|category|(active_|)useflag) ]] || { - _message "unknown command: $command" - return - } - [[ "$pkgset" == (installed(_versions|_sets|)|available(_versions|_sets|_pkgnames_only|)|binary|category|(active_|)useflag) ]] || { - pkgset="$command" - } - expl=("${(@)argv[1,-2]}") - _gentoo_packages_update_$pkgset + local command="$argv[$#]" expl cachevar pkgset update_policy + zstyle -s ":completion:*:*:$service:*" cache-policy update_policy + if [[ -z "$update_policy" ]]; then + zstyle ":completion:*:*:$service:*" cache-policy _gentoo_cache_policy + fi + [[ "$command" == (installed(_versions|_sets|)|available(_versions|_sets|_pkgnames_only|)|binary|category|(active_|)useflag) ]] || { + _message "unknown command: $command" + return + } + [[ "$pkgset" == (installed(_versions|_sets|)|available(_versions|_sets|_pkgnames_only|)|binary|category|(active_|)useflag) ]] || { + pkgset="$command" + } + expl=("${(@)argv[1,-2]}") + _gentoo_packages_update_$pkgset } _gentoo_cache_policy () { # rebuild if cache is more than a week old - oldp=( "$1"(mw+1) ) - (( $#oldp )) && return 0 + oldp=( "$1"(mw+1) ) + (( $#oldp )) && return 0 } - _gentoo_packages "$@" + +# vim: set et sw=2 sts=2 ts=2 ft=zsh: diff --git a/src/_gentoolkit b/src/_gentoolkit index 9ea7cc2..0b0d956 100644 --- a/src/_gentoolkit +++ b/src/_gentoolkit @@ -11,17 +11,15 @@ # revdep-rebuild (partial) # eread *nothing todo* - # XXX: shouldn't this go to _gentoo_package? _packages () { - if compset -P '(\\|)(>=|<=|<|>|=)' ; then - _gentoo_packages ${*/(#m)(installed|available)/${MATCH}_versions} - else - _gentoo_packages $* - fi + 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=( @@ -40,21 +38,21 @@ _euse () { {'(--global)-g','(-g)--global'}'[show only global use flags]' {'(--local)-l','(-l)--local'}'[show only local use flags]' ) - if (( CURRENT == 2 ));then + if (( CURRENT == 2 )); then _arguments -s $start_args - elif (( CURRENT == 3 ));then + elif (( CURRENT == 3 )); then case "$words[2]" in -i|--info|-a|--active) - _arguments -s $suboptions_args \ - '*:useflags:_gentoo_packages useflag' && ret=0 + _arguments -s $suboptions_args \ + '*:useflags:_gentoo_packages useflag' && ret=0 ;; -E|--enable) - _arguments \ - '*:useflags:_gentoo_packages useflag' && ret=0 + _arguments \ + '*:useflags:_gentoo_packages useflag' && ret=0 ;; -D|--disable) - _arguments \ - '*:active useflags:_gentoo_packages active_useflag' && ret=0 + _arguments \ + '*:active useflags:_gentoo_packages active_useflag' && ret=0 esac else _arguments \ @@ -62,7 +60,6 @@ _euse () { fi } - _equery () { # Based off of X/_xauth. local state context line expl ret=1 @@ -81,7 +78,6 @@ _equery () { '(-o --overlay-tree)'{-o,--overlay-tree}'[also search in overlay tree]' ) - _arguments -s $start_args \ '*::command:->command' && ret=0 @@ -89,321 +85,318 @@ _equery () { 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 - ;; + 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 + 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 <time>]:time:_eclean_time' - '(: -)'{-h,--help}'[show help]' - '(: -)'{-V,--version}'[show version]' - ) - dist_opts=( - '(-s,--size-limit)'{-s,--size-limit}'[do not delete disfiles bigger than <size>]:size:_eclean_size' - '(-f,--fetch-restricted)'{-f,--fetch-restricted}'[protect fetch-restricted files]' - ) - # XXX: If you add options here make sure that it'll work. - # since there isn't any option *right* now, $pkg_opts - # is never used. - pkg_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 <time>]:time:_eclean_time' + '(: -)'{-h,--help}'[show help]' + '(: -)'{-V,--version}'[show version]' + ) + dist_opts=( + '(-s,--size-limit)'{-s,--size-limit}'[do not delete disfiles bigger than <size>]:size:_eclean_size' + '(-f,--fetch-restricted)'{-f,--fetch-restricted}'[protect fetch-restricted files]' + ) + # XXX: If you add options here make sure that it'll work. + # since there isn't any option *right* now, $pkg_opts + # is never used. + pkg_opts=() - # check which kind of eclean command we run. - case "$words[1]" in - eclean-pkg) - _arguments -s $global_opts $pkg_opts && - return 0 - ;; - eclean-dist) - _arguments -s $global_opts $dist_opts && - return 0 - ;; - eclean) - # eclean. complete only specifics options if an action has been given, - # global_opts and packages|distfiles otherwhise. - if (( $words[(I)(packages)] )); then - # Currently no options so return 0 - #_values "packages options" $pkg_opts && - return 0 - elif (( $words[(I)(distfiles)] )); then - _values "distfiles options" $dist_opts && - return 0 - else - _arguments -s $global_opts - # complete packages|distfiles only if CURRENT-1 don't need an arg - if [[ ! $words[CURRENT-1] =~ -(e|-exclude-file|t|-time-limit|s|-size-limit|h|-help|v|-version) ]]; then - _values 'eclean command' \ - 'packages[clean outdated binary packages]' \ - 'distfiles[clean outdated packages sources files]' && - return 0 - fi - fi - ;; - esac + # check which kind of eclean command we run. + case "$words[1]" in + eclean-pkg) + _arguments -s $global_opts $pkg_opts && return 0 + ;; + eclean-dist) + _arguments -s $global_opts $dist_opts && return 0 + ;; + eclean) + # eclean. complete only specifics options if an action has been given, + # global_opts and packages|distfiles otherwhise. + if (( $words[(I)(packages)] )); then + # Currently no options so return 0 + #_values "packages options" $pkg_opts && + return 0 + elif (( $words[(I)(distfiles)] )); then + _values "distfiles options" $dist_opts && + return 0 + else + _arguments -s $global_opts + # complete packages|distfiles only if CURRENT-1 don't need an arg + if [[ ! $words[CURRENT-1] =~ -(e|-exclude-file|t|-time-limit|s|-size-limit|h|-help|v|-version) ]]; then + _values 'eclean command' \ + 'packages[clean outdated binary packages]' \ + 'distfiles[clean outdated packages sources files]' && + return 0 + fi + fi + ;; + esac } + _eclean_time () { - # adapted from _chmod - compset -P '*' - suf=( -S '' ) - _alternative -O suf \ - 'number:number:(0 1 2 3 4 5 6 7 8 9)' \ - 'time_unit:time_unit:((y\:year m\:month w\:week d\:day h\:hour))' && - return 0 + # adapted from _chmod + compset -P '*' + suf=( -S '' ) + _alternative -O suf \ + 'number:number:(0 1 2 3 4 5 6 7 8 9)' \ + 'time_unit:time_unit:((y\:year m\:month w\:week d\:day h\:hour))' && + return 0 } + _eclean_size () { - # adapted from _chmod - compset -P '*' - suf=( -S '' ) - _alternative -O suf \ - 'number:number:(0 1 2 3 4 5 6 7 8 9)' \ - 'time_unit:time_unit:((G\:gigabytes M\:megabytes K\:kilobytes B\:bytes))' && - return 0 + # adapted from _chmod + compset -P '*' + suf=( -S '' ) + _alternative -O suf \ + 'number:number:(0 1 2 3 4 5 6 7 8 9)' \ + 'time_unit:time_unit:((G\:gigabytes M\:megabytes K\:kilobytes B\:bytes))' && + return 0 } - _epkginfo () { - if (( CURRENT == 2 )); then - _arguments -s '*:package:_gentoo_packages available' - fi + if (( CURRENT == 2 )); then + _arguments -s '*:package:_gentoo_packages available' + fi } - _genpkgindex () { - _arguments -s \ - '(: -)'{-h,--help}'[Display help and exit]' \ - '(-h --help -q --quiet -v --verbose)'{-q,--quiet}'[Be quiet]' \ - '(-h --help -q --quiet -v --verbose)'{-v,--verbose}'[Be verbose]' \ - '(-h --help -c --compress)'{-c,--compress}'[Compresses the generated metadata with bzip2]' \ - '(-h --help -P --pkgdir)'{-P,--pkgdir}'[Set the base location of the binary packages (default $PKGDIR)]:file:_files' + _arguments -s \ + '(: -)'{-h,--help}'[Display help and exit]' \ + '(-h --help -q --quiet -v --verbose)'{-q,--quiet}'[Be quiet]' \ + '(-h --help -q --quiet -v --verbose)'{-v,--verbose}'[Be verbose]' \ + '(-h --help -c --compress)'{-c,--compress}'[Compresses the generated metadata with bzip2]' \ + '(-h --help -P --pkgdir)'{-P,--pkgdir}'[Set the base location of the binary packages (default $PKGDIR)]:file:_files' } - _glsa-check () { - local actions + local actions - actions=(-l --list -d --dump --print -t --test -p --pretend -f --fix -i --inject -h --help -V --version -m --mail) + actions=(-l --list -d --dump --print -t --test -p --pretend -f --fix -i --inject -h --help -V --version -m --mail) - _arguments -s \ - "($actions)"{-l,--list}'[list all unapplied GLSA]:glsa_id:_glsa_id' \ - "($actions)"{-d,--dump,--print}'[show all information about the given GLSA]:glsa_id:_glsa_id' \ - "($actions)"{-t,--test}'[test if this system is affected by the given GLSA]:glsa_id:_glsa_id' \ - "($actions)"{-p,--pretend}'[show the necessary commands to apply this GLSA]:glsa_id:_glsa_id' \ - "($actions)"{-f,--fix}'[try to auto-apply this GLSA (experimental)]:glsa_id:_glsa_id' \ - "($actions)"{-i,--inject}'[inject the given GLSA into the checkfile]:glsa_id:_glsa_id' \ - '(-n --nocolor)'{-n,--nocolor}'[disable colors (option)]' \ - '(: -)'{-h,--help}'[Show help message]' \ - '(: -)'{-V,--version}'[some information about this tool]' \ - '(-v --verbose)'{-v,--verbose}'[print more messages (option)]' \ - '(-c --cve)'{-c,--cve}'[show CAN ids in listing mode (option)]' \ - "($actions)"{-m,--mail}'[send a mail with the given GLSAs to the administrator]:glsa_id:_glsa_id' + _arguments -s \ + "($actions)"{-l,--list}'[list all unapplied GLSA]:glsa_id:_glsa_id' \ + "($actions)"{-d,--dump,--print}'[show all information about the given GLSA]:glsa_id:_glsa_id' \ + "($actions)"{-t,--test}'[test if this system is affected by the given GLSA]:glsa_id:_glsa_id' \ + "($actions)"{-p,--pretend}'[show the necessary commands to apply this GLSA]:glsa_id:_glsa_id' \ + "($actions)"{-f,--fix}'[try to auto-apply this GLSA (experimental)]:glsa_id:_glsa_id' \ + "($actions)"{-i,--inject}'[inject the given GLSA into the checkfile]:glsa_id:_glsa_id' \ + '(-n --nocolor)'{-n,--nocolor}'[disable colors (option)]' \ + '(: -)'{-h,--help}'[Show help message]' \ + '(: -)'{-V,--version}'[some information about this tool]' \ + '(-v --verbose)'{-v,--verbose}'[print more messages (option)]' \ + '(-c --cve)'{-c,--cve}'[show CAN ids in listing mode (option)]' \ + "($actions)"{-m,--mail}'[send a mail with the given GLSAs to the administrator]:glsa_id:_glsa_id' } + # glsa-list can contain an arbitrary number of GLSA ids, # filenames containing GLSAs or the special identifiers # 'all', 'new' and 'affected' _glsa_id () { -# XXX: we'll avoid displaying GLSA ids, because the ratio use/noise -# will be low. May be we should display only the X previous GLSA, -# or GLSA ids of the X last month. -# -# start to look at /usr/lib/gentoolkit/pym/glsa.py if GLSA_DIR is still -# PORTDIR + "metadata/glsa/" -# and then get the list (it's only xml files in GLSA_DIR, easy!) + # XXX: we'll avoid displaying GLSA ids, because the ratio use/noise + # will be low. May be we should display only the X previous GLSA, + # or GLSA ids of the X last month. + # + # start to look at /usr/lib/gentoolkit/pym/glsa.py if GLSA_DIR is still + # PORTDIR + "metadata/glsa/" + # and then get the list (it's only xml files in GLSA_DIR, easy!) - compadd 'all' 'new' 'affected' - _files + compadd 'all' 'new' 'affected' + _files } - _revdep-rebuild () { - if (( $words[(I)(--)] )); then - # here it's no more revdep-rebuild options, but emerge options that are called - # FIXME: not working yet. need to load the _portage file - _arguments -s '*:portage:_portage --emerge $@' && return 0 - fi + if (( $words[(I)(--)] )); then + # here it's no more revdep-rebuild options, but emerge options that are called + # FIXME: not working yet. need to load the _portage file + _arguments -s '*:portage:_portage --emerge $@' && return 0 + fi - _arguments -s \ - '(-C --nocolor)'{-C,--nocolor}'[Turn off colored output]' \ - '(-d --debug)'{-d,--debug}'[Print way too much information (uses bash set -xv)]' \ - '(-e --exact)'{-e,--exact}'[Emerge based on exact package version]' \ - '(: -)'{-h,--help}'[Print help]' \ - '(-i --ignore)'{-i,--ignore}'[Ignore temporary files from previous runs]' \ - '(-k --keep-temp)'{-k,--keep-temp}'[Do not delete temporary files on exit]' \ - '(-L --library)'{-L,--library}'[<NAME> Emerge existing packages that use the library with NAME]:file:_files' \ - '(-l --no-ld-path)'{-l,--no-ld-path}'[Do not set LD_LIBRARY_PATH]' \ - '(-o --no-order)'{-o,--no-order}'[Do not check the build order (Saves time, but may cause breakage)]' \ - '(-p --pretend)'{-p,--pretend}'[Do a trial run without actually emerging anything (also passed to emerge command)]' \ - '(-P --no-progress)'{-P,--no-progress}'[Turn off the progress meter]' \ - '(-q --quiet)'{-q,--quiet}'[Be less verbose (also passed to emerge command)]' \ - '(-v --verbose)'{-v,--verbose}'[Be more verbose (also passed to emerge command)]' \ - '(-u --no-util)'{-u,--no-util}'[<UTIL> Do not use features provided by UTIL]:file:_files' - # XXX: does someone really use -u|--no-util option? - # we can check packages installed (like portage-utils etc) to see - # which "UTIL" is avaiable. + _arguments -s \ + '(-C --nocolor)'{-C,--nocolor}'[Turn off colored output]' \ + '(-d --debug)'{-d,--debug}'[Print way too much information (uses bash set -xv)]' \ + '(-e --exact)'{-e,--exact}'[Emerge based on exact package version]' \ + '(: -)'{-h,--help}'[Print help]' \ + '(-i --ignore)'{-i,--ignore}'[Ignore temporary files from previous runs]' \ + '(-k --keep-temp)'{-k,--keep-temp}'[Do not delete temporary files on exit]' \ + '(-L --library)'{-L,--library}'[<NAME> Emerge existing packages that use the library with NAME]:file:_files' \ + '(-l --no-ld-path)'{-l,--no-ld-path}'[Do not set LD_LIBRARY_PATH]' \ + '(-o --no-order)'{-o,--no-order}'[Do not check the build order (Saves time, but may cause breakage)]' \ + '(-p --pretend)'{-p,--pretend}'[Do a trial run without actually emerging anything (also passed to emerge command)]' \ + '(-P --no-progress)'{-P,--no-progress}'[Turn off the progress meter]' \ + '(-q --quiet)'{-q,--quiet}'[Be less verbose (also passed to emerge command)]' \ + '(-v --verbose)'{-v,--verbose}'[Be more verbose (also passed to emerge command)]' \ + '(-u --no-util)'{-u,--no-util}'[<UTIL> Do not use features provided by UTIL]:file:_files' + # XXX: does someone really use -u|--no-util option? + # we can check packages installed (like portage-utils etc) to see + # which "UTIL" is avaiable. } - case "$service" in - euse) - _euse "$@" && return 0 + euse) + _euse "$@" && return 0 ;; - equery) - _equery "$@" && return 0 + equery) + _equery "$@" && return 0 ;; - eclean*) - _eclean_wrapper "$@" && return 0 + eclean*) + _eclean_wrapper "$@" && return 0 ;; - epkginfo) - _epkginfo "$@" && return 0 + epkginfo) + _epkginfo "$@" && return 0 ;; - genpkgindex) - _genpkgindex "$@" && return 0 + genpkgindex) + _genpkgindex "$@" && return 0 ;; - glsa-check) - _glsa-check "$@" && return 0 + glsa-check) + _glsa-check "$@" && return 0 ;; - revdep-rebuild) - _revdep-rebuild "$@" && return 0 + revdep-rebuild) + _revdep-rebuild "$@" && return 0 ;; esac + +# vim: set et sw=2 sts=2 ts=2 ft=zsh: diff --git a/src/_layman b/src/_layman index 01c1333..bf22ded 100644 --- a/src/_layman +++ b/src/_layman @@ -1,51 +1,59 @@ #compdef layman # layman-1.1.1 -# + local arguments actions_args actions global_opts add_actions + _layman_remote_overlays() { - local layman_list_overlays - layman_list_overlays=(${(S)${${(f)"$(layman -k -N -L 2>/dev/null)"}//\[*}#\* }) - compadd "$@" ${(kv)=layman_list_overlays} "ALL" + local layman_list_overlays + layman_list_overlays=(${(S)${${(f)"$(layman -k -N -L 2>/dev/null)"}//\[*}#\* }) + compadd "$@" ${(kv)=layman_list_overlays} "ALL" } + _layman_local_overlays() { - local layman_list_overlays - layman_list_overlays=(${(S)${${(f)"$(layman -N -l)"}//\[*}#\* }) - compadd "$@" ${(kv)=layman_list_overlays} "ALL" + local layman_list_overlays + layman_list_overlays=(${(S)${${(f)"$(layman -N -l)"}//\[*}#\* }) + compadd "$@" ${(kv)=layman_list_overlays} "ALL" } + actions=( - --delete -d - --sync -s - --info -i - --sync-all -S - --list -L - --list-local -l - --fetch -f + --delete -d + --sync -s + --info -i + --sync-all -S + --list -L + --list-local -l + --fetch -f ) global_opts=( - '(--config -c)'{-c,--config}'[Select an alternative configuration file]:configuration file:_files' - '(--overlays -o)'{-o,--overlays}'[Specifies the location of additional overlay lists]:overlay url:_urls' - '(--nofetch -n)'{-n,--nofetch}'[Prevents from automatically fetching the remote lists of overlays]' - '(--nocheck -k)'{-k,--nocheck}'[Prevents from checking the remote lists of overlays for complete overlay definitions]' - '(--quiet -q)'{-q,--quiet}'[Makes layman completely quiet]' - '(--verbose -v)'{-v,--verbose}'[Verbose output]' - '(--quietness -Q)'{-Q,--quietness}'[Makes layman less verbose]:level:({0..4})' - '(--nocolor -N)'{-N,--nocolor}'[Remove color codes from the output]' + '(--config -c)'{-c,--config}'[Select an alternative configuration file]:configuration file:_files' + '(--overlays -o)'{-o,--overlays}'[Specifies the location of additional overlay lists]:overlay url:_urls' + '(--nofetch -n)'{-n,--nofetch}'[Prevents from automatically fetching the remote lists of overlays]' + '(--nocheck -k)'{-k,--nocheck}'[Prevents from checking the remote lists of overlays for complete overlay definitions]' + '(--quiet -q)'{-q,--quiet}'[Makes layman completely quiet]' + '(--verbose -v)'{-v,--verbose}'[Verbose output]' + '(--quietness -Q)'{-Q,--quietness}'[Makes layman less verbose]:level:({0..4})' + '(--nocolor -N)'{-N,--nocolor}'[Remove color codes from the output]' ) + add_actions=( - -p --priority - --add -a + -p --priority + --add -a ) + actions_args=( - "($actions --add -a)"{--add,-a}'[Add the given overlay to your installed overlays]:overlay:_layman_remote_overlays' - "($actions --priority -p)"{--priority,-p}'[It will modify the priority of the added overlay]:priority:({0..100})' - "($actions $add_actions)"{--delete,-d}'[Delete the given overlay from your installed overlays]:overlay:_layman_local_overlays' - "($actions $add_actions)"{--sync,-s}'[Update the specified overlay]:overlat:_layman_local_overlays' - "($actions $add_actions)"{--info,-i}'[Display all available information about the specified overlay]:overlay:_layman_remote_overlays' - "($actions $add_actions)"{--sync-all,-S}'[Update all overlays]' - "($actions $add_actions)"{--list,-L}'[List the contents of the remote list]' - "($actions $add_actions)"{--list-local,-l}'[List the locally installed overlays]' - "($actions $add_actions)"{--fetch,-f}'[Fetches the remote list of overlays]' + "($actions --add -a)"{--add,-a}'[Add the given overlay to your installed overlays]:overlay:_layman_remote_overlays' + "($actions --priority -p)"{--priority,-p}'[It will modify the priority of the added overlay]:priority:({0..100})' + "($actions $add_actions)"{--delete,-d}'[Delete the given overlay from your installed overlays]:overlay:_layman_local_overlays' + "($actions $add_actions)"{--sync,-s}'[Update the specified overlay]:overlat:_layman_local_overlays' + "($actions $add_actions)"{--info,-i}'[Display all available information about the specified overlay]:overlay:_layman_remote_overlays' + "($actions $add_actions)"{--sync-all,-S}'[Update all overlays]' + "($actions $add_actions)"{--list,-L}'[List the contents of the remote list]' + "($actions $add_actions)"{--list-local,-l}'[List the locally installed overlays]' + "($actions $add_actions)"{--fetch,-f}'[Fetches the remote list of overlays]' ) + _arguments $global_opts[@] $actions_args[@] + +# vim: set et sw=2 sts=2 ts=2 ft=zsh: diff --git a/src/_openrc b/src/_openrc index 84ecbc8..3a250f4 100644 --- a/src/_openrc +++ b/src/_openrc @@ -6,80 +6,82 @@ local gentoo_runlevels gentoo_runlevels=(/etc/runlevels/*(:t)) case "$service" in - rc-service) - if (( CURRENT == 2 )); then - _arguments -s \ - '(-e --exists)'{-e,--exists}"[tests if the service exists or not]" \ - '(-l --list)'{-l,--list}'[list all available services]' \ - '(-r --resolve)'{-r,--resolve}'[resolve the service name to an init script]' \ - '(-C --nocolor)'{-C,--nocolor}'[Disable color output]' \ - '(-v --verbose)'{-v,--verbose}'[Run verbosely]' \ - '(-q --quiet)'{-q,--quiet}'[Run quietly]' - _values "service" /etc/init.d/*~*.sh(:t) - else - case $words[2] in - -e|--exists|-r|--resolve) - (( CURRENT > 3 )) && return 0 - _values "service" /etc/init.d/*~*.sh(:t) - ;; - -*) - return 0 - ;; - *) - _values "action" stop start restart describe zap - ;; - esac - fi - ;; - rc-update) - local used_init - used_init=(${=${(M)${(f)"$(/sbin/rc-update show 2>/dev/null)"}:#*|*[a-z]*}% |*}) + rc-service) + if (( CURRENT == 2 )); then + _arguments -s \ + '(-e --exists)'{-e,--exists}"[tests if the service exists or not]" \ + '(-l --list)'{-l,--list}'[list all available services]' \ + '(-r --resolve)'{-r,--resolve}'[resolve the service name to an init script]' \ + '(-C --nocolor)'{-C,--nocolor}'[Disable color output]' \ + '(-v --verbose)'{-v,--verbose}'[Run verbosely]' \ + '(-q --quiet)'{-q,--quiet}'[Run quietly]' + _values "service" /etc/init.d/*~*.sh(:t) + else + case $words[2] in + -e|--exists|-r|--resolve) + (( CURRENT > 3 )) && return 0 + _values "service" /etc/init.d/*~*.sh(:t) + ;; + -*) + return 0 + ;; + *) + _values "action" stop start restart describe zap + ;; + esac + fi + ;; + rc-update) + local used_init + used_init=(${=${(M)${(f)"$(/sbin/rc-update show 2>/dev/null)"}:#*|*[a-z]*}% |*}) - if (( CURRENT == 2 )); then - _values "rc-update actions" \ - 'add[Add script to a runlevel]' \ - 'del[Delete script from a runlevel]' \ - 'show[Show scripts lanched at a runlevel]' \ - '-a[Add script to a runlevel]' \ - '-d[Delete script from a runlevel]' \ - '-s[Show scripts lanched at a runlevel]' - elif (( CURRENT == 3 )); then - case "$words[2]" in - add|-a) - _values "service" /etc/init.d/*~*.sh(:t) - ;; - del|-d) - _values "service" $used_init - ;; - show|-s) - _values "runlevels" $gentoo_runlevels \ - '-v[Show all init scripts]' \ - '--verbose[Show all init scripts]' - ;; - esac - elif (( CURRENT == 4 )); then - _values "runlevels" $gentoo_runlevels - fi - ;; - rc-status) - _arguments -s \ - {'(--all)-a','(-a)--all'}'[Show services at all runlevels]' \ - {'(--crashed)-c','(-c)--crashed'}'[Show crashed services]' \ - {'(--list)-l','(-l)--list'}'[Show list of runlevels]' \ - {'(--runlevel)-r','(-r)--runlevel'}'[Show the name of the current runlevel]' \ - {'(--servicelist)-s','(-s)--servicelist'}'[Show all services]' \ - {'(--unused)-u','(-u)--unused'}'[Show services not assigned to any run level]' \ - {'(--help)-h','(-h)--help'}'[Print this help output]' \ - {'(--nocolor)-C','(-C)--nocolor'}'[Disable color output]' \ - {'(--version)-V','(-V)--version'}'[Display software version]' \ - {'(--verbose)-v','(-v)--verbose'}'[Run verbosely]' \ - {'(--quiet)-q','(-q)--quiet'}'[Run quietly (Does not affect errors)]' + if (( CURRENT == 2 )); then + _values "rc-update actions" \ + 'add[Add script to a runlevel]' \ + 'del[Delete script from a runlevel]' \ + 'show[Show scripts lanched at a runlevel]' \ + '-a[Add script to a runlevel]' \ + '-d[Delete script from a runlevel]' \ + '-s[Show scripts lanched at a runlevel]' + elif (( CURRENT == 3 )); then + case "$words[2]" in + add|-a) + _values "service" /etc/init.d/*~*.sh(:t) + ;; + del|-d) + _values "service" $used_init + ;; + show|-s) + _values "runlevels" $gentoo_runlevels \ + '-v[Show all init scripts]' \ + '--verbose[Show all init scripts]' + ;; + esac + elif (( CURRENT == 4 )); then + _values "runlevels" $gentoo_runlevels + fi + ;; + rc-status) + _arguments -s \ + {'(--all)-a','(-a)--all'}'[Show services at all runlevels]' \ + {'(--crashed)-c','(-c)--crashed'}'[Show crashed services]' \ + {'(--list)-l','(-l)--list'}'[Show list of runlevels]' \ + {'(--runlevel)-r','(-r)--runlevel'}'[Show the name of the current runlevel]' \ + {'(--servicelist)-s','(-s)--servicelist'}'[Show all services]' \ + {'(--unused)-u','(-u)--unused'}'[Show services not assigned to any run level]' \ + {'(--help)-h','(-h)--help'}'[Print this help output]' \ + {'(--nocolor)-C','(-C)--nocolor'}'[Disable color output]' \ + {'(--version)-V','(-V)--version'}'[Display software version]' \ + {'(--verbose)-v','(-v)--verbose'}'[Run verbosely]' \ + {'(--quiet)-q','(-q)--quiet'}'[Run quietly (Does not affect errors)]' - _values 'runlevels' $gentoo_runlevels - ;; - rc) - if (( CURRENT == 2 )); then - _values "runlevels" $gentoo_runlevels - fi - ;; + _values 'runlevels' $gentoo_runlevels + ;; + rc) + if (( CURRENT == 2 )); then + _values "runlevels" $gentoo_runlevels + fi + ;; esac + +# vim: set et sw=2 sts=2 ts=2 ft=zsh: diff --git a/src/_portage b/src/_portage index aef3487..e9639d8 100644 --- a/src/_portage +++ b/src/_portage @@ -12,49 +12,46 @@ # Still TODO: # xpak - # Stuff for ebuild _ebuild () { - if (( CURRENT == 2 ));then - _files -g \*.ebuild - elif (( CURRENT > 2 ));then - _values "ebuild command" \ - 'clean[Cleans the temporary build directory]' \ - 'help[Show help]' \ - 'setup[Run all package specific setup actions and exotic system checks.]' \ - 'fetch[Fetch all necessary files]' \ - 'digest[Creates a digest file for the package]' \ - 'unpack[Extracts the sources to a subdirectory in the build directory]' \ - 'compile[Compiles the extracted sources by running the src_compile()]' \ - 'preinst[Run specific actions that need to be done before installation]' \ - 'install[Installs the package to the temporary install directory]' \ - 'postinst[Run specific actions that need to be done after installation]' \ - 'qmerge[Installs the package de the filesystem]' \ - 'merge[perform the following actions: fetch, unpack, compile, install and qmerge.]' \ - 'unmerge[Remove the installed files of the packages]' \ - 'prerm[Run specific actions that need to be executed before unmerge]' \ - 'postrm[Run specific actions that need to be executed after unmerge]' \ - 'config[Run specific actions needed to be executed after the emerge process has completed.]' \ - 'package[This command is a lot like the merge command, but create a .tbz2 package]' \ - 'manifest[Updates the manifest file for the package.]' \ - 'rpm[Builds a RedHat RPM package]' - fi + if (( CURRENT == 2 )); then + _files -g \*.ebuild + elif (( CURRENT > 2 )); then + _values "ebuild command" \ + 'clean[Cleans the temporary build directory]' \ + 'help[Show help]' \ + 'setup[Run all package specific setup actions and exotic system checks.]' \ + 'fetch[Fetch all necessary files]' \ + 'digest[Creates a digest file for the package]' \ + 'unpack[Extracts the sources to a subdirectory in the build directory]' \ + 'compile[Compiles the extracted sources by running the src_compile()]' \ + 'preinst[Run specific actions that need to be done before installation]' \ + 'install[Installs the package to the temporary install directory]' \ + 'postinst[Run specific actions that need to be done after installation]' \ + 'qmerge[Installs the package de the filesystem]' \ + 'merge[perform the following actions: fetch, unpack, compile, install and qmerge.]' \ + 'unmerge[Remove the installed files of the packages]' \ + 'prerm[Run specific actions that need to be executed before unmerge]' \ + 'postrm[Run specific actions that need to be executed after unmerge]' \ + 'config[Run specific actions needed to be executed after the emerge process has completed.]' \ + 'package[This command is a lot like the merge command, but create a .tbz2 package]' \ + 'manifest[Updates the manifest file for the package.]' \ + 'rpm[Builds a RedHat RPM package]' + fi } - # Stuff for quickpkg _quickpkg () { - if compset -P '(\\|)(>=|<=|<|>|=)'; then - _arguments -s \ - '*:installed package:_gentoo_packages installed_versions' - elif compset -P '(\\|)[/]'; then - _path_files -W / -/ - else - _arguments \ - '*:installed package:_gentoo_packages installed' - fi + if compset -P '(\\|)(>=|<=|<|>|=)'; then + _arguments -s \ + '*:installed package:_gentoo_packages installed_versions' + elif compset -P '(\\|)[/]'; then + _path_files -W / -/ + else + _arguments '*:installed package:_gentoo_packages installed' + fi } # Stuff for emerge @@ -63,18 +60,18 @@ _emerge () { local nopkg_opts all noask_opts bopts install_args common_args profiles noask_opts=(-p -a --pretend --ask --regen --info --search -s --searchdesc \ - -S --version -V --help -h --metadata --check-news) + -S --version -V --help -h --metadata --check-news) nopkg_opts=(--resume --skipfirst -c --clean -h --help --depclean --info \ - --metadata -P --prune --regen -s --search -S --searchdesc --sync -C \ - --unmerge -V --version -i --inject --list-sets --deselect --check-news) + --metadata -P --prune --regen -s --search -S --searchdesc --sync -C \ + --unmerge -V --version -i --inject --list-sets --deselect --check-news) bopts=($nopkg_opts -b --buildpkg -B --buildpkgonly -G --getbinpkgonly -g \ - --getbinpkg -k --usepkg -K --usepkgonly --fetch-all-uri -f -F --fetchonly) + --getbinpkg -k --usepkg -K --usepkgonly --fetch-all-uri -f -F --fetchonly) all=($bopts -l --changelog --columns --deep -D --emptytree -e --newuse \ - --noconfmem --nodeps -O --noreplace -n --oneshot -1 -o --onlydeps --tree -t \ - -u --update -U --upgradeonly --config) + --noconfmem --nodeps -O --noreplace -n --oneshot -1 -o --onlydeps --tree -t \ + -u --update -U --upgradeonly --config) common_args=( "($noask_opts --sync)"{-p,--pretend}"[Simply display what would be done]" @@ -86,64 +83,64 @@ _emerge () { '(: -)'{-h,--help}'[Displays help]' "(: -)--config[Run package specific actions needed to be executed after the emerge process has completed]:installed atom:_gentoo_packages installed" "(: -)--list-sets[Displays a list of available package sets]" - "--color=[Color output]:yes/no:((y\:'yes' n\:'no'))" - "--accept-properties=[Temporarily override the ACCEPT_PROPERTIES variable]" - "--accept-restrict=[Temporarily override the ACCEPT_RESTRICT variable]" - "($noask_opts)"{-A,--alert}"[Add a terminal bell to all interactive prompts]" - "--ignore-default-opts[Ignore EMERGE_DEFAULT_OPTS]" - "--moo[Have you mooed today?]" - "(--jobs)--jobs[Number of packages to build simultaneously]:jobs:({1.."${#${$(</proc/cpuinfo)/^processor}}"})" + "--color=[Color output]:yes/no:((y\:'yes' n\:'no'))" + "--accept-properties=[Temporarily override the ACCEPT_PROPERTIES variable]" + "--accept-restrict=[Temporarily override the ACCEPT_RESTRICT variable]" + "($noask_opts)"{-A,--alert}"[Add a terminal bell to all interactive prompts]" + "--ignore-default-opts[Ignore EMERGE_DEFAULT_OPTS]" + "--moo[Have you mooed today?]" + "(--jobs)--jobs[Number of packages to build simultaneously]:jobs:({1.."${#${$(</proc/cpuinfo)/^processor}}"})" ) install_args=( - "--deselect[Remove atom from world file]" - "--alphabetical[Sort use/other flags output alphabetically despite of status]" - "--ask-enter-invalid[When with --ask, interpret a single 'Enter' key press as invalid input]" - "--autounmask[Automatically unmask packages and generate package.use]" - "--autounmask-unrestricted-atoms[Use >= for autounmask if possible]" - "--autounmask-keep-masks[Don't unmask hardmasks and unkeyworded (live)]" - "--autounmask-write[Automatically write autounmask changes (respect CONFIG_PROTECT)]" - "--backtrack=[Number of times to backtrack if dependency calculation fails]:number:(0 10 30)" - "--binpkg-respect-use[Ignore binary packages if their uses don't match current config]" - "--complete-graph[Consider the deep dependencies of all packages from the world set]" - "--complete-graph-if-new-use[--complete-graph if USE or IUSE will change for an installed package]" - "--complete-graph-if-new-ver[--complete-graph if an installed package version will change]" - "--config-root=[Set PORTAGE_CONFIGROOT variable]:root path:_files -/" - "--depclean-lib-check[Check library link-level dependencies]" - "--digest[Prevent corruption from being noticed]" - "--dynamic-deps[Substitute the dependencies of installed packages with the dependencies of corresponding unbuilt ebuilds]" - "--fail-clean[Clean up temporary files after a build failure]" - "--ignore-built-slot-operator-deps[Ignore the slot/sub-slot dependencies for built pkg]" - "--keep-going[Continue as much as possible after an error]" - "--load-average[No new builds should be started if there are other builds running and the load average is at least VALUE]" - "--misspell-suggestions[Enable or disable misspell suggestions]" - "--newrepo[Recompile a package if it is now being pulled from a different repository]" - "--usepkg-exclude[Ignore matching binary packages]:installed atom:_gentoo_packages installed" - "--rebuild-exclude[Do not rebuild matching packages on --rebuild]:installed atom:_gentoo_packages installed" - "--rebuild-ignore[Do not rebuild packages that depend on matching packages on --rebuild]:installed atom:_gentoo_packages installed" - "--package-moves[Perform package moves when necessary]" - "--pkg-format[Binary package format]:archive type:(tar rpm)" - "--prefix=[Set EPREFIX env variable]:prefix path:_files -/" - "--quiet-build[Redirect all build output to logs]" - "--quiet-fail[Suppresses display of the build log on stdout]" - "--quiet-repo-display[Suppress ::repository in output (and use numbers)]" - "--quiet-unmerge-warn[Disable the warning message on --unmerge and friends]" - "--rebuild-if-new-slot[Automatically rebuild or reinstall packages when dependencies can be satisfied by a newer slot]" - "--rebuild-if-new-rev[Rebuild packages when build-time dependencies are built from source, if the dependency is not already installed with the same version and revision]" - "--rebuild-if-new-ver[Rebuild packages when build-time dependencies are built from source, if the dependency is not already installed with the same version]" - "--rebuild-if-unbuilt[Rebuild packages when build-time dependencies are built from source]" - "--rebuilt-binaries[Replace installed packages with binary packages that have been rebuilt]" - "--rebuilt-binaries-timestamp[Only binaries older than TIMESTAMP will be considered by the rebuilt-binaries logic]:TIMESTAMP" - "--reinstall[Alias for --changed-use (currently)]:reinstall opts:(changes-use)" - "--reinstall-atoms[Treat matching packages as if they are not installed]:installed atoms:_gentoo_packages installed" - "--root=[Set ROOT env variable]:prefix path:_files -/" - "(: $nopkg_opts)"{-w,--select}"[Add specified packages to the world set (inverse of --oneshot)]" - "--selective=[Use --selective=n if you want to forcefully disable --selective, regardless of options like --changed-use, --newuse, --noreplace, or --update]:yes/no:((y\:'yes' n\:'no'))" - "--unordered-display[Produce more readable package tree with --tree]" - "--use-ebuild-visibility[Use unbuilt ebuild metadata for visibility checks on built packages]" - "--useoldpkg-atoms[Prefer matching binary packages over newer unbuilt packages]:available atom:_gentoo_packages available" + "--deselect[Remove atom from world file]" + "--alphabetical[Sort use/other flags output alphabetically despite of status]" + "--ask-enter-invalid[When with --ask, interpret a single 'Enter' key press as invalid input]" + "--autounmask[Automatically unmask packages and generate package.use]" + "--autounmask-unrestricted-atoms[Use >= for autounmask if possible]" + "--autounmask-keep-masks[Don't unmask hardmasks and unkeyworded (live)]" + "--autounmask-write[Automatically write autounmask changes (respect CONFIG_PROTECT)]" + "--backtrack=[Number of times to backtrack if dependency calculation fails]:number:(0 10 30)" + "--binpkg-respect-use[Ignore binary packages if their uses don't match current config]" + "--complete-graph[Consider the deep dependencies of all packages from the world set]" + "--complete-graph-if-new-use[--complete-graph if USE or IUSE will change for an installed package]" + "--complete-graph-if-new-ver[--complete-graph if an installed package version will change]" + "--config-root=[Set PORTAGE_CONFIGROOT variable]:root path:_files -/" + "--depclean-lib-check[Check library link-level dependencies]" + "--digest[Prevent corruption from being noticed]" + "--dynamic-deps[Substitute the dependencies of installed packages with the dependencies of corresponding unbuilt ebuilds]" + "--fail-clean[Clean up temporary files after a build failure]" + "--ignore-built-slot-operator-deps[Ignore the slot/sub-slot dependencies for built pkg]" + "--keep-going[Continue as much as possible after an error]" + "--load-average[No new builds should be started if there are other builds running and the load average is at least VALUE]" + "--misspell-suggestions[Enable or disable misspell suggestions]" + "--newrepo[Recompile a package if it is now being pulled from a different repository]" + "--usepkg-exclude[Ignore matching binary packages]:installed atom:_gentoo_packages installed" + "--rebuild-exclude[Do not rebuild matching packages on --rebuild]:installed atom:_gentoo_packages installed" + "--rebuild-ignore[Do not rebuild packages that depend on matching packages on --rebuild]:installed atom:_gentoo_packages installed" + "--package-moves[Perform package moves when necessary]" + "--pkg-format[Binary package format]:archive type:(tar rpm)" + "--prefix=[Set EPREFIX env variable]:prefix path:_files -/" + "--quiet-build[Redirect all build output to logs]" + "--quiet-fail[Suppresses display of the build log on stdout]" + "--quiet-repo-display[Suppress ::repository in output (and use numbers)]" + "--quiet-unmerge-warn[Disable the warning message on --unmerge and friends]" + "--rebuild-if-new-slot[Automatically rebuild or reinstall packages when dependencies can be satisfied by a newer slot]" + "--rebuild-if-new-rev[Rebuild packages when build-time dependencies are built from source, if the dependency is not already installed with the same version and revision]" + "--rebuild-if-new-ver[Rebuild packages when build-time dependencies are built from source, if the dependency is not already installed with the same version]" + "--rebuild-if-unbuilt[Rebuild packages when build-time dependencies are built from source]" + "--rebuilt-binaries[Replace installed packages with binary packages that have been rebuilt]" + "--rebuilt-binaries-timestamp[Only binaries older than TIMESTAMP will be considered by the rebuilt-binaries logic]:TIMESTAMP" + "--reinstall[Alias for --changed-use (currently)]:reinstall opts:(changes-use)" + "--reinstall-atoms[Treat matching packages as if they are not installed]:installed atoms:_gentoo_packages installed" + "--root=[Set ROOT env variable]:prefix path:_files -/" + "(: $nopkg_opts)"{-w,--select}"[Add specified packages to the world set (inverse of --oneshot)]" + "--selective=[Use --selective=n if you want to forcefully disable --selective, regardless of options like --changed-use, --newuse, --noreplace, or --update]:yes/no:((y\:'yes' n\:'no'))" + "--unordered-display[Produce more readable package tree with --tree]" + "--use-ebuild-visibility[Use unbuilt ebuild metadata for visibility checks on built packages]" + "--useoldpkg-atoms[Prefer matching binary packages over newer unbuilt packages]:available atom:_gentoo_packages available" "($bopts)"{-b,--buildpkg}"[Tells emerge to build binary packages]" "($bopts)--buildpkg-exclude[Space separated list of package atoms for which no binary packages should be built]" - "($bopts)--exclude[Space separated list of package names or slot atoms which should not be installed]" + "($bopts)--exclude[Space separated list of package names or slot atoms which should not be installed]" "($bopts)"{-B,--buildpkgonly}"[Tells emerge to only build binary packages]" "($nopkg_opts --emptytree -e -l --changelog --usepkgonly -K)"{-l,--changelog}"[This will show the ChangeLog]" "($nopkg_opts -t --tree)--columns[Displays versions in aligned format]" @@ -188,178 +185,171 @@ _emerge () { 'system[All packages in the system profile]' ) - # Dispatch - if (( $words[(I)(--(unmerge|(dep|)clean|prune|deselect)|-[[:alpha:]]#(C|c|P)[[:alpha:]]#)] )) ; then - if compset -P '(\\|)(>=|<=|<|>|=)'; then - _arguments -s \ - '*:installed package:_gentoo_packages installed_versions' && return 0 - else - _arguments -s \ - "$common_args[@]" "$install_args[@]" \ - "*:installed package:_gentoo_packages installed" \ - "::installed sets:_gentoo_packages installed_sets" \ - && return 0 - fi + if (( $words[(I)(--(unmerge|(dep|)clean|prune|deselect)|-[[:alpha:]]#(C|c|P)[[:alpha:]]#)] )); then + if compset -P '(\\|)(>=|<=|<|>|=)'; then + _arguments -s \ + '*:installed package:_gentoo_packages installed_versions' && return 0 + else + _arguments -s \ + "$common_args[@]" "$install_args[@]" \ + "*:installed package:_gentoo_packages installed" \ + "::installed sets:_gentoo_packages installed_sets" \ + && return 0 + fi - elif (( $words[(I)(world|system)] )) ; then + elif (( $words[(I)(world|system)] )); then _arguments -s \ - "$common_args[@]" "$install_args[@]" \ - "($nopkg_opts[1,-2] --inject -i --oneshot -1):" && return 0 + "$common_args[@]" "$install_args[@]" \ + "($nopkg_opts[1,-2] --inject -i --oneshot -1):" && return 0 - elif (( $words[(I)(--usepkgonly|-[[:alnum:]]#K[[:alnum:]]#)] )) ; then + elif (( $words[(I)(--usepkgonly|-[[:alnum:]]#K[[:alnum:]]#)] )); then _arguments -s \ - "$common_args[@]" "$install_args[@]" \ - '*:binary package:_gentoo_packages binary' && return 0 + "$common_args[@]" "$install_args[@]" \ + '*:binary package:_gentoo_packages binary' && return 0 else - if compset -P '(\\|)(>=|<=|<|>|=)'; then - _arguments \ - "*:portage:_gentoo_packages available_versions" && return 0 - elif (( $words[(I)(--inject|-i)] )) ; then - _arguments -s \ - "$common_args[@]" "$install_args[@]" \ - "*:portage:_gentoo_packages available_versions" && return 0 - else - _arguments -s \ - "$common_args[@]" "$install_args[@]" \ - "($nopkg_opts)::portage: _values 'profile' \$profiles[@] " \ - "($nopkg_opts)*:portage:_gentoo_packages available" \ - "($nopkg_opts)::available sets:_gentoo_packages available_sets" \ - && return 0 - fi + if compset -P '(\\|)(>=|<=|<|>|=)'; then + _arguments "*:portage:_gentoo_packages available_versions" && return 0 + elif (( $words[(I)(--inject|-i)] )); then + _arguments -s \ + "$common_args[@]" "$install_args[@]" \ + "*:portage:_gentoo_packages available_versions" && return 0 + else + _arguments -s \ + "$common_args[@]" "$install_args[@]" \ + "($nopkg_opts)::portage: _values 'profile' \$profiles[@] " \ + "($nopkg_opts)*:portage:_gentoo_packages available" \ + "($nopkg_opts)::available sets:_gentoo_packages available_sets" \ + && return 0 + fi fi } - _emaint () { - _arguments -s \ - "(: -)"{-h,--help}'[show help message and exit]' \ - "(: -)"--version"[show program's version number and exit]" \ - '(-c --check -f --fix)'{-c,--check}"[Check for any problems that may exist]:emaint:((all\:'check all' world\:'check only world file'))" \ - '(-c --check -f --fix)'{-f,--fix}"[Fix any problems that may exist]:emaint:((all\:'check all' world\:'check only world file'))" + _arguments -s \ + "(: -)"{-h,--help}'[show help message and exit]' \ + "(: -)"--version"[show program's version number and exit]" \ + '(-c --check -f --fix)'{-c,--check}"[Check for any problems that may exist]:emaint:((all\:'check all' world\:'check only world file'))" \ + '(-c --check -f --fix)'{-f,--fix}"[Fix any problems that may exist]:emaint:((all\:'check all' world\:'check only world file'))" } - _env-update () { - _arguments -s '(: -)--no-ldconfig[Do not run ldconfig]' + _arguments -s '(: -)--no-ldconfig[Do not run ldconfig]' } - _portageq () { - local action - - action="$words[2]" - - if (( CURRENT == 2 )); then - _values 'command' \ - '--help[Show help]' \ - 'config_protect_mask[Returns the CONFIG_PROTECT_MASK paths]' \ - 'config_protect[Returns the CONFIG_PROTECT paths]' \ - 'portdir[Returns PORTDIR paths]' \ - 'contents[List the files that are installed for a given package]' \ - 'vdb_path[Returns the path used for the var(installed) package database]' \ - 'gentoo_mirrors[Returns the mirrors set to use in the portage configuration]' \ - 'exithandler[MISSING DOCUMENTATION!]' \ - 'all_best_visible[Returns all best_visible packages (without .ebuild)]' \ - 'match[Returns a \n separated list of category/package-version]' \ - 'metadata[Returns metadata values for the specified package]' \ - 'best_visible[Returns category/package-version (without .ebuild)]' \ - 'mass_best_visible[Returns category/package-version (without .ebuild)]' \ - "has_version[Return code 0 if it's available, 1 otherwise]" \ - 'envvar[Returns a specific environment variable as exists prior to ebuild.sh]' \ - 'pkgdir[Returns the PKGDIR path]' \ - 'best_version[Returns category/package-version (without .ebuild)]' \ - 'mass_best_version[Returns category/package-version (without .ebuild)]' \ - 'portdir_overlay[Returns the PORTDIR_OVERLAY path]' \ - 'distdir[Returns the DISTDIR path]' \ - 'owners[print the packages that own the files and which files belong to each package]' - elif (( CURRENT == 3 )); then - if [[ "$action" =~ (contents|(all_|mass_|)best_visible|match|metadata|(has|best)_version|owners|mass_best_version) ]]; then - _arguments -s '*:root:_files -g /' - fi - elif (( CURRENT > 3 )); then - if [[ "$action" =~ ((mass_|)best_(visible|version)|has_version) ]]; then - _arguments -s '*:package:_gentoo_packages available' - elif [[ "$action" == owners ]]; then - _arguments -s '*:root:_files' - fi + local action + + action="$words[2]" + + if (( CURRENT == 2 )); then + _values 'command' \ + '--help[Show help]' \ + 'config_protect_mask[Returns the CONFIG_PROTECT_MASK paths]' \ + 'config_protect[Returns the CONFIG_PROTECT paths]' \ + 'portdir[Returns PORTDIR paths]' \ + 'contents[List the files that are installed for a given package]' \ + 'vdb_path[Returns the path used for the var(installed) package database]' \ + 'gentoo_mirrors[Returns the mirrors set to use in the portage configuration]' \ + 'exithandler[MISSING DOCUMENTATION!]' \ + 'all_best_visible[Returns all best_visible packages (without .ebuild)]' \ + 'match[Returns a \n separated list of category/package-version]' \ + 'metadata[Returns metadata values for the specified package]' \ + 'best_visible[Returns category/package-version (without .ebuild)]' \ + 'mass_best_visible[Returns category/package-version (without .ebuild)]' \ + "has_version[Return code 0 if it's available, 1 otherwise]" \ + 'envvar[Returns a specific environment variable as exists prior to ebuild.sh]' \ + 'pkgdir[Returns the PKGDIR path]' \ + 'best_version[Returns category/package-version (without .ebuild)]' \ + 'mass_best_version[Returns category/package-version (without .ebuild)]' \ + 'portdir_overlay[Returns the PORTDIR_OVERLAY path]' \ + 'distdir[Returns the DISTDIR path]' \ + 'owners[print the packages that own the files and which files belong to each package]' + elif (( CURRENT == 3 )); then + if [[ "$action" =~ (contents|(all_|mass_|)best_visible|match|metadata|(has|best)_version|owners|mass_best_version) ]]; then + _arguments -s '*:root:_files -g /' + fi + elif (( CURRENT > 3 )); then + if [[ "$action" =~ ((mass_|)best_(visible|version)|has_version) ]]; then + _arguments -s '*:package:_gentoo_packages available' + elif [[ "$action" == owners ]]; then + _arguments -s '*:root:_files' fi + fi } - _repoman () { - local previous - - previous="$words[CURRENT-1]" - - _arguments -s \ - '(--force)'--force'[Force commit to proceed, regardless of QA issues]' \ - '(-q --quiet -v --verbose)'{-q,--quiet}'[Be less verbose about extraneous info]' \ - '(-p --pretend -m --commitmsg -M --commitmsgfile)'{-p,--pretend}'[Don’t commit or fix anything; just show what would be done]' \ - '(-i --include-masked)'{-i,--include-masked}'[Include masked packages in scans at category or tree level]' \ - '(-x --xmlparse)'{-x,--xmlparse}'[Forces the metadata.xml parse check to be carried out]' \ - '(-q --quiet -v --verbose)'{-v,--verbose}'[Displays every package name while checking]' \ - '(-I --ignore-arches)'{-I,--ignore-arches}'[Ignore arch-specific failures (where arch != host)]' \ - '(-m --commitmsg -M --commitmsgfile)'{-m,--commitmsg}'[Adds a commit message via the command line]:message:' \ - '(-m --commitmsg -M --commitmsgfile)'{-M,--commitmsgfile}'[Adds a commit message from the specified file]:commit_file:_files' \ - '(: -)'{-V,--version}'[Show version info]' \ - '(: -)'{-h,--help}'[Show this screen]' - - # if we don't have an option that cancel action, or if we don't already have an action. - if ! [[ "$previous" =~ (-h|-V|-m|-M|--version|--help|--commitmsg|--commitmsgfile) ]] && - ! (( $words[(I)(full|last|help|scan|fix|lfull|manifest|commit)] )); then - _values 'action' \ - 'full[Scan directory tree for QA issues (full listing)]' \ - 'last[Remember report from last run]' \ - 'help[Show this screen]' \ - 'scan[Scan directory tree for QA issues (short listing)]' \ - 'fix[Fix simple QA issues (stray digests, missing digests)]' \ - 'lfull[Remember report from last run (full listing)]' \ - 'manifest[Generate a Manifest (fetches files if necessary)]' \ - 'commit[Scan directory tree for QA issues; if OK, commit via cvs]' - fi + local previous + + previous="$words[CURRENT-1]" + + _arguments -s \ + '(--force)'--force'[Force commit to proceed, regardless of QA issues]' \ + '(-q --quiet -v --verbose)'{-q,--quiet}'[Be less verbose about extraneous info]' \ + '(-p --pretend -m --commitmsg -M --commitmsgfile)'{-p,--pretend}'[Don’t commit or fix anything; just show what would be done]' \ + '(-i --include-masked)'{-i,--include-masked}'[Include masked packages in scans at category or tree level]' \ + '(-x --xmlparse)'{-x,--xmlparse}'[Forces the metadata.xml parse check to be carried out]' \ + '(-q --quiet -v --verbose)'{-v,--verbose}'[Displays every package name while checking]' \ + '(-I --ignore-arches)'{-I,--ignore-arches}'[Ignore arch-specific failures (where arch != host)]' \ + '(-m --commitmsg -M --commitmsgfile)'{-m,--commitmsg}'[Adds a commit message via the command line]:message:' \ + '(-m --commitmsg -M --commitmsgfile)'{-M,--commitmsgfile}'[Adds a commit message from the specified file]:commit_file:_files' \ + '(: -)'{-V,--version}'[Show version info]' \ + '(: -)'{-h,--help}'[Show this screen]' + + # if we don't have an option that cancel action, or if we don't already have an action. + if ! [[ "$previous" =~ (-h|-V|-m|-M|--version|--help|--commitmsg|--commitmsgfile) ]] && + ! (( $words[(I)(full|last|help|scan|fix|lfull|manifest|commit)] )); then + _values 'action' \ + 'full[Scan directory tree for QA issues (full listing)]' \ + 'last[Remember report from last run]' \ + 'help[Show this screen]' \ + 'scan[Scan directory tree for QA issues (short listing)]' \ + 'fix[Fix simple QA issues (stray digests, missing digests)]' \ + 'lfull[Remember report from last run (full listing)]' \ + 'manifest[Generate a Manifest (fetches files if necessary)]' \ + 'commit[Scan directory tree for QA issues; if OK, commit via cvs]' + fi } - _tbz2tool () { - if (( CURRENT == 2 )); then - _values 'action' 'join' 'split' - elif (( CURRENT > 2 )) && (( CURRENT < 6 )); then - _arguments -s '*:file:_files' - fi + if (( CURRENT == 2 )); then + _values 'action' 'join' 'split' + elif (( CURRENT > 2 )) && (( CURRENT < 6 )); then + _arguments -s '*:file:_files' + fi } - zparseopts -D -E -A Args -- -emerge -if (( ${+Args[--emerge]} ));then - _emerge "$@" && return 0 +if (( ${+Args[--emerge]} )); then + _emerge "$@" && return 0 fi case "$service" in - emerge) - _emerge "$@" && return 0 - ;; - ebuild) - _ebuild "$@" && return 0 - ;; - quickpkg) - _quickpkg "$@" && return 0 - ;; - emaint) - _emaint "$@" && return 0 - ;; - env-update) - _env-update "$@" && return 0 - ;; - portageq) - _portageq "$@" && return 0 - ;; - repoman) - _repoman "$@" && return 0 - ;; - tbz2tool) - _tbz2tool "$@" && return 0 - ;; + emerge) + _emerge "$@" && return 0 + ;; + ebuild) + _ebuild "$@" && return 0 + ;; + quickpkg) + _quickpkg "$@" && return 0 + ;; + emaint) + _emaint "$@" && return 0 + ;; + env-update) + _env-update "$@" && return 0 + ;; + portageq) + _portageq "$@" && return 0 + ;; + repoman) + _repoman "$@" && return 0 + ;; + tbz2tool) + _tbz2tool "$@" && return 0 + ;; esac +# vim: set et sw=2 sts=2 ts=2 ft=zsh: diff --git a/src/_portage_utils b/src/_portage_utils index 4638258..95811c8 100644 --- a/src/_portage_utils +++ b/src/_portage_utils @@ -2,266 +2,266 @@ # portage-utils-0.53 - _portdir() { - local mainreponame mainrepopath overlayname overlaypath - - if [[ -e /usr/share/portage/config/repos.conf ]]; then - if [[ ${1} == "-o" ]]; then - for overlayname in $(_parsereposconf -l); do - overlaypath+=($(_parsereposconf ${overlayname} location)) - done + local mainreponame mainrepopath overlayname overlaypath - source /etc/make.conf 2>/dev/null - source /etc/portage/make.conf 2>/dev/null + if [[ -e /usr/share/portage/config/repos.conf ]]; then + if [[ ${1} == "-o" ]]; then + for overlayname in $(_parsereposconf -l); do + overlaypath+=($(_parsereposconf ${overlayname} location)) + done - overlaypath+=(${(@)PORTDIR_OVERLAY}) + source /etc/make.conf 2>/dev/null + source /etc/portage/make.conf 2>/dev/null - echo "${(@u)overlaypath}" - else - mainreponame=$(_parsereposconf DEFAULT main-repo) - mainrepopath=$(_parsereposconf ${mainreponame} location) + overlaypath+=(${(@)PORTDIR_OVERLAY}) - echo "${mainrepopath}" - fi + echo "${(@u)overlaypath}" else - source /usr/share/portage/config/make.globals 2>/dev/null - source /etc/make.conf 2>/dev/null - source /etc/portage/make.conf 2>/dev/null + mainreponame=$(_parsereposconf DEFAULT main-repo) + mainrepopath=$(_parsereposconf ${mainreponame} location) - if [[ ${1} == "-o" ]]; then - echo "${(@u)PORTDIR_OVERLAY}" - else - echo "${PORTDIR}" - fi + echo "${mainrepopath}" + fi + else + source /usr/share/portage/config/make.globals 2>/dev/null + source /etc/make.conf 2>/dev/null + source /etc/portage/make.conf 2>/dev/null + + if [[ ${1} == "-o" ]]; then + echo "${(@u)PORTDIR_OVERLAY}" + else + echo "${PORTDIR}" fi + fi } _parsereposconf() { - local v f insection section arr + local v f insection section arr - for f in /usr/share/portage/config/repos.conf \ - /etc/portage/repos.conf \ - /etc/portage/repos.conf/*.conf; do + for f in /usr/share/portage/config/repos.conf \ + /etc/portage/repos.conf \ + /etc/portage/repos.conf/*.conf; do - [[ -f ${f} ]] || continue - insection=0 - declare -A arr - IFS='= ' + [[ -f ${f} ]] || continue + insection=0 + declare -A arr + IFS='= ' - while read -r name value; do - [[ -z ${name} || ${name} == '#'* ]] && continue + while read -r name value; do + [[ -z ${name} || ${name} == '#'* ]] && continue - if [[ (${name} == '['*']') && (-z ${value}) ]]; then - value=${name//(\]|\[)} - name="section" - fi - arr[${name}]=${value} + if [[ (${name} == '['*']') && (-z ${value}) ]]; then + value=${name//(\]|\[)} + name="section" + fi + arr[${name}]=${value} - if [[ ${insection} == 1 && ${name} == "section" ]]; then - break - elif [[ ${name} == "section" ]]; then - [[ ${value} == ${1} ]] && insection=1 - secname+=(${value}) - elif [[ ${insection} == 1 ]]; then - if [[ ${name} == ${2} ]]; then - v=${value} - fi - fi - continue - done < ${f} - done + if [[ ${insection} == 1 && ${name} == "section" ]]; then + break + elif [[ ${name} == "section" ]]; then + [[ ${value} == ${1} ]] && insection=1 + secname+=(${value}) + elif [[ ${insection} == 1 ]]; then + if [[ ${name} == ${2} ]]; then + v=${value} + fi + fi + continue + done < ${f} + done - if [[ ${1} == "-l" ]]; then - echo "${(@)secname}" - else - echo "${v}" - fi + if [[ ${1} == "-l" ]]; then + echo "${(@)secname}" + else + echo "${v}" + fi } - local common_args PORTDIR PORTDIR="$(_portdir)" common_args=( - '--root[Set the ROOT env var]:root directory:_files -/' \ - {'(--verbose)-v','(-v)--verbose'}'[Make a lot of noise]' \ - {'(--quiet)-q','(-q)--quiet'}'[Tighter output; suppress warnings]' \ - {'(--nocolor)-C','(-C)--nocolor'}'[Do not output color]' \ - {'(--help)-h','(-h)--help'}'[Print this help and exit]' \ - {'(--version)-V','(-V)--version'}'[Print version and exit]' \ + '--root[Set the ROOT env var]:root directory:_files -/' \ + {'(--verbose)-v','(-v)--verbose'}'[Make a lot of noise]' \ + {'(--quiet)-q','(-q)--quiet'}'[Tighter output; suppress warnings]' \ + {'(--nocolor)-C','(-C)--nocolor'}'[Do not output color]' \ + {'(--help)-h','(-h)--help'}'[Print this help and exit]' \ + {'(--version)-V','(-V)--version'}'[Print version and exit]' \ ) case $service in - qatom) - _arguments -s $common_args \ - {'(--compare)-c','(-c)--compare'}'[Compare two atoms]' - ;; - qcache) - local arch - local -a arches allarches + qatom) + _arguments -s $common_args \ + {'(--compare)-c','(-c)--compare'}'[Compare two atoms]' + ;; + qcache) + local arch + local -a arches allarches - show_archs(){ - arches=(${(f)"$(<$PORTDIR/profiles/arch.list)"}) - for arch in $arches; do - [[ $arch =~ '^[^#]' ]] && allarches+=( $arch ) - done - _describe -t available-arches "arch" allarches - } + show_archs(){ + arches=(${(f)"$(<$PORTDIR/profiles/arch.list)"}) + for arch in $arches; do + [[ $arch =~ '^[^#]' ]] && allarches+=( $arch ) + done + _describe -t available-arches "arch" allarches + } - _arguments -s $common_args \ - {'(--matchpkg)-p','(-p)--matchpkg'}'[match pkgname]:package name:_gentoo_packages available_pkgnames_only' \ - {'(--matchcat)-c','(-c)--matchcat'}'[match catname]:category:_gentoo_packages category' \ - {'(--imlate)-i','(-i)--imlate'}'[list packages that can be marked stable on a given arch]' \ - {'(--dropped)-d','(-d)--dropped'}'[list packages that have dropped keywords on a version bump on a given arch]' \ - {'(--testing)-t','(-t)--testing'}'[list packages that have ~arch versions, but no stable versions on a given arch]' \ - {'(--stats)-s','(-s)--stats'}'[display statistics about the portage tree]' \ - {'(--all)-a','(-a)--all'}'[list packages that have at least one version keyworded for on a given arch]' \ - {'(--not)-n','(-n)--not'}"[list packages that aren't keyworded on a given arch]" \ - '*:arch:show_archs' - ;; - qcheck) - _arguments -s $common_args \ - {'(--all)-a','(-a)--all'}'[List all packages]' \ - {'(--exact)-e','(-e)--exact'}'[Exact match (only CAT/PN or PN without PV)]' \ - {'(--skip)-s','(-s)--skip'}'[Ignore files matching regular expression]:regex' \ - {'(--update)-u','(-u)--update'}'[Update missing files, chksum and mtimes for packages]' \ - {'(--noafk)-A','(-A)--noafk'}'[Ignore missing files]' \ - {'(--badonly)-B','(-B)--badonly'}'[Only print pkgs containing bad files]' \ - {'(--nohash)-H','(-H)--nohash'}'[Ignore differing/unknown file chksums]' \ - {'(--nomtime)-T','(-T)--nomtime'}'[Ignore differing file mtimes]' \ - '--skip-protected[Ignore files in CONFIG_PROTECT-ed paths]' \ - {'(--prelink)-p','(-p)--prelink'}'[Undo prelink when calculating checksums]' \ - '*:packages:_gentoo_packages installed' - ;; - qdepends) - _arguments -s $common_args \ - {'(--depend)-d','(-d)--depend'}'[Show DEPEND info (default)]' \ - {'(--rdepend)-r','(-r)--rdepend'}'[Show RDEPEND info]' \ - {'(--pdepend)-p','(-p)--pdepend'}'[Show PDEPEND info]' \ - {'(--key)-k','(-k)--key'}'[User defined vdb key]:vdb key' \ - {'(--query)-Q','(-Q)--query'}'[Query reverse deps]' \ - {'(--name-only)-N','(-N)--name-only'}'[Only show package name]' \ - {'(--all)-a','(-a)--all'}'[Show all DEPEND info]' \ - {'(--format)-f','(-f)--format'}'[Pretty format specified depend strings]' \ - '*:packages:_gentoo_packages installed' - ;; - qfile) - _arguments -s $common_args \ - {'(--slots)-S','(-S)--slots'}'[Display installed packages with slots]' \ - {'(--root-prefix)-R','(-R)--root-prefix'}'[Assume arguments are already prefixed by $ROOT]' \ - {'(--from)-f','(-f)--from'}'[Read arguments from file <arg> ("-" for stdin)]' \ - {'(--max-args)-m','(-m)--max-args'}'[Treat from file arguments by groups of <arg> (defaults to 5000)]:number' \ - {'(--basename)-b','(-b)--basename'}'[Match any component of the path]' \ - {'(--orphans)-o','(-o)--orphans'}'[List orphan files]' \ - {'(--exclude)-x','(-x)--exclude'}"[Don't look in package <arg> (used with --orphans)]:package:_gentoo_packages installed" \ - {'(--exact)-e','(-e)--exact'}'[Exact match (used with --exclude)]' \ - '*:filename:_files' - ;; - qgrep) - _arguments -s $common_args \ - {'(--invert-match)-I','(-I)--invert-match'}'[Select non-matching lines]' \ - {'(--ignore-case)-i','(-i)--ignore-case'}'[Ignore case distinctions]' \ - {'(--with-filename)-H','(-H)--with-filename'}'[Print the filename for each match]' \ - {'(--with-name)-N','(-N)--with-name'}'[Print the package or eclass name for each match]' \ - {'(--count)-c','(-c)--count'}'[Only print a count of matching lines per FILE]' \ - {'(--list)-l','(-l)--list'}'[Only print FILE names containing matches]' \ - {'(--invert-list)-L','(-L)--invert-list'}'[Only print FILE names containing no match]' \ - {'(--regexp)-e','(-e)--regexp'}'[Use PATTERN as a regular expression]' \ - {'(--extended)-x','(-x)--extended'}'[Use PATTERN as an extended regular expression]' \ - {'(--installed)-J','(-J)--installed'}'[Search in installed ebuilds instead of the tree]' \ - {'(--eclass)-E','(-E)--eclass'}'[Search in eclasses instead of ebuilds]' \ - {'(--skip-comments)-s','(-s)--skip-comments'}'[Skip comments lines]' \ - {'(--skip)-S','(-S)--skip'}'[Skip lines matching <arg>]:pattern' \ - {'(--before)-B','(-B)--before'}'[Print <arg> lines of leading context]:number' \ - {'(--after)-A','(-A)--after'}'[Print <arg> lines of trailing context]:number' \ - '*:pattern::' - ;; - qlist) - _arguments -s $common_args \ - {'(--installed)-I','(-I)--installed'}'[Just show installed packages]' \ - {'(--slots)-S','(-S)--slots'}'[Display installed packages with slots]' \ - {'(--repo)-R','(-R)--repo'}'[Display installed packages with repository]' \ - {'(--umap)-U','(-U)--umap'}'[Display installed packages with flags used]' \ - {'(--columns)-c','(-c)--columns'}'[Display column view]' \ - '--show-debug[Show /usr/lib/debug files]' \ - {'(--exact)-e','(-e)--exact'}'[Exact match (only CAT/PN or PN without PV)]' \ - {'(--all)-a','(-a)--all'}'[Show every installed package]' \ - {'(--dir)-d','(-d)--dir'}'[Only show directories]' \ - {'(--obj)-o','(-o)--obj'}'[Only show objects]' \ - {'(--sym)-s','(-s)--sym'}'[Only show symlinks]' \ - '*:packages:_gentoo_packages installed' - ;; - qlop) - _arguments -s $common_args \ - {'(--gauge)-g','(-g)--gauge'}'[Gauge number of times a package has been merged]' \ - {'(--time)-t','(-t)--time'}'[Calculate merge time for a specific package]' \ - {'(--human)-H','(-H)--human'}'[Print seconds in human readable format (needs -t)]' \ - {'(--list)-l','(-l)--list'}'[Show merge history]' \ - {'(--unlist)-u','(-u)--unlist'}'[Show unmerge history]' \ - {'(--sync)-s','(-s)--sync'}'[Show sync history]' \ - {'(--current)-c','(-c)--current'}'[Show current emerging packages]' \ - {'(--logfile)-f','(-f)--logfile'}'[Read emerge logfile instead of /var/log/emerge.log]:log:_files' \ - '*:packages:_gentoo_packages available' - ;; - qsearch) - _arguments -s $common_args \ - {'(--all)-a','(-a)--all'}'[List the descriptions of every package in the cache]' \ - {'(--cache)-c','(-c)--cache'}'[Use the portage cache]' \ - {'(--ebuilds)-e','(-e)--ebuilds'}'[Use the portage ebuild tree]' \ - {'(--search)-s','(-s)--search'}'[Regex search package basenames]' \ - {'(--desc)-S','(-S)--desc'}'[Regex search package descriptions]' \ - {'(--name-only)-N','(-N)--name-only'}'[Only show package name]' \ - {'(--homepage)-H','(-H)--homepage'}'[Show homepage info]' \ - '*:pattern::' - ;; - qsize) - _arguments -s $common_args \ - {'(--filesystem)-f','(-f)--filesystem'}'[Show size used on disk]' \ - {'(--all)-a','(-a)--all'}'[Size all installed packages]' \ - {'(--sum)-s','(-s)--sum'}'[Include a summary]' \ - {'(--sum-only)-S','(-S)--sum-only'}'[Show just the summary]' \ - {'(--megabytes)-m','(-m)--megabytes'}'[Display size in megabytes]' \ - {'(--kilobytes)-k','(-k)--kilobytes'}'[Display size in kilobytes]' \ - {'(--bytes)-b','(-b)--bytes'}'[Display size in bytes]' \ - {'(--ignore)-i','(-i)--ignore'}'[Ignore regexp string]:pattern' \ - '*:packages:_gentoo_packages installed' - ;; - quse) - _arguments -s $common_args \ - {'(--exact)-e','(-e)--exact'}'[Show exact non regexp matching using strcmp]' \ - {'(--all)-a','(-a)--all'}'[Show annoying things in IUSE]' \ - {'(--keywords)-K','(-K)--keywords'}'[Use the KEYWORDS vs IUSE]' \ - {'(--license)-L','(-L)--license'}'[Use the LICENSE vs IUSE]' \ - {'(--describe)-D','(-D)--describe'}'[Describe the USE flag]' \ - {'(--format)-F','(-F)--format'}'[Use your own variable formats: -F NAME=]:format' \ - {'(--name-only)-N','(-N)--name-only'}'[Only show package name]' \ - '*:use flag:_gentoo_packages useflag' - ;; - qtbz2) - _arguments -s $common_args \ - {'(--dir)-d','(-d)--dir'}'[Change to specified directory]:directory:_files -/' \ - {'(--join)-j','(-j)--join'}'[Join tar.bz2 + xpak into a tbz2]:*:tar.bz2 file and xpak file:_files -g \*.\(tar.bz2\|xpak\)' \ - {'(--split)-s','(-s)--split'}'[Split a tbz2 into a tar.bz2 + xpak]:tbz2 file:_files -g \*.tbz2' \ - {'(--tarbz2)-t','(-t)--tarbz2'}'[Just split the tar.bz2]:tbz2 file:_files -g \*.tbz2' \ - {'(--xpak)-x','(-x)--xpak'}'[Just split the xpak]:tbz2 file:_files -g \*.tbz2' \ - {'(--stdout)-O','(-O)--stdout'}'[Write files to stdout]' - ;; - qpkg) - _arguments -s $common_args \ - {'(--clean)-c','(-c)--clean'}'[clean pkgdir of unused binary files]' \ - {'(--eclean)-E','(-E)--eclean'}'[clean pkgdir of files not in the tree anymore (slow)]' \ - {'(--pretend)-p','(-p)--pretend'}'[pretend only]' \ - {'(--pkgdir)-P','(-P)--pkgdir'}'[alternate package directory]:alternate pkgdir:_files -/' \ - '*:Installed packages:_gentoo_packages installed_versions' - ;; - qxpak) - _arguments -s $common_args \ - {'(--list)-l','(-l)--list'}'[List the contents of an archive]:xpak archive:_files -g \*.xpak' \ - {'(--extract)-x','(-x)--extract'}'[Extract the contents of an archive]:xpak archive:_files -g \*.xpak' \ - {'(--create)-c','(-c)--create'}'[Create an archive of a directory/files]:*:archive name and files to archive:_files' \ - {'(--dir)-d','(-d)--dir'}'[Change to specified directory]:directory:_files -/' \ - {'(--stdout)-O','(-O)--stdout'}'[Write files to stdout]' - ;; + _arguments -s $common_args \ + {'(--matchpkg)-p','(-p)--matchpkg'}'[match pkgname]:package name:_gentoo_packages available_pkgnames_only' \ + {'(--matchcat)-c','(-c)--matchcat'}'[match catname]:category:_gentoo_packages category' \ + {'(--imlate)-i','(-i)--imlate'}'[list packages that can be marked stable on a given arch]' \ + {'(--dropped)-d','(-d)--dropped'}'[list packages that have dropped keywords on a version bump on a given arch]' \ + {'(--testing)-t','(-t)--testing'}'[list packages that have ~arch versions, but no stable versions on a given arch]' \ + {'(--stats)-s','(-s)--stats'}'[display statistics about the portage tree]' \ + {'(--all)-a','(-a)--all'}'[list packages that have at least one version keyworded for on a given arch]' \ + {'(--not)-n','(-n)--not'}"[list packages that aren't keyworded on a given arch]" \ + '*:arch:show_archs' + ;; + qcheck) + _arguments -s $common_args \ + {'(--all)-a','(-a)--all'}'[List all packages]' \ + {'(--exact)-e','(-e)--exact'}'[Exact match (only CAT/PN or PN without PV)]' \ + {'(--skip)-s','(-s)--skip'}'[Ignore files matching regular expression]:regex' \ + {'(--update)-u','(-u)--update'}'[Update missing files, chksum and mtimes for packages]' \ + {'(--noafk)-A','(-A)--noafk'}'[Ignore missing files]' \ + {'(--badonly)-B','(-B)--badonly'}'[Only print pkgs containing bad files]' \ + {'(--nohash)-H','(-H)--nohash'}'[Ignore differing/unknown file chksums]' \ + {'(--nomtime)-T','(-T)--nomtime'}'[Ignore differing file mtimes]' \ + '--skip-protected[Ignore files in CONFIG_PROTECT-ed paths]' \ + {'(--prelink)-p','(-p)--prelink'}'[Undo prelink when calculating checksums]' \ + '*:packages:_gentoo_packages installed' + ;; + qdepends) + _arguments -s $common_args \ + {'(--depend)-d','(-d)--depend'}'[Show DEPEND info (default)]' \ + {'(--rdepend)-r','(-r)--rdepend'}'[Show RDEPEND info]' \ + {'(--pdepend)-p','(-p)--pdepend'}'[Show PDEPEND info]' \ + {'(--key)-k','(-k)--key'}'[User defined vdb key]:vdb key' \ + {'(--query)-Q','(-Q)--query'}'[Query reverse deps]' \ + {'(--name-only)-N','(-N)--name-only'}'[Only show package name]' \ + {'(--all)-a','(-a)--all'}'[Show all DEPEND info]' \ + {'(--format)-f','(-f)--format'}'[Pretty format specified depend strings]' \ + '*:packages:_gentoo_packages installed' + ;; + qfile) + _arguments -s $common_args \ + {'(--slots)-S','(-S)--slots'}'[Display installed packages with slots]' \ + {'(--root-prefix)-R','(-R)--root-prefix'}'[Assume arguments are already prefixed by $ROOT]' \ + {'(--from)-f','(-f)--from'}'[Read arguments from file <arg> ("-" for stdin)]' \ + {'(--max-args)-m','(-m)--max-args'}'[Treat from file arguments by groups of <arg> (defaults to 5000)]:number' \ + {'(--basename)-b','(-b)--basename'}'[Match any component of the path]' \ + {'(--orphans)-o','(-o)--orphans'}'[List orphan files]' \ + {'(--exclude)-x','(-x)--exclude'}"[Don't look in package <arg> (used with --orphans)]:package:_gentoo_packages installed" \ + {'(--exact)-e','(-e)--exact'}'[Exact match (used with --exclude)]' \ + '*:filename:_files' + ;; + qgrep) + _arguments -s $common_args \ + {'(--invert-match)-I','(-I)--invert-match'}'[Select non-matching lines]' \ + {'(--ignore-case)-i','(-i)--ignore-case'}'[Ignore case distinctions]' \ + {'(--with-filename)-H','(-H)--with-filename'}'[Print the filename for each match]' \ + {'(--with-name)-N','(-N)--with-name'}'[Print the package or eclass name for each match]' \ + {'(--count)-c','(-c)--count'}'[Only print a count of matching lines per FILE]' \ + {'(--list)-l','(-l)--list'}'[Only print FILE names containing matches]' \ + {'(--invert-list)-L','(-L)--invert-list'}'[Only print FILE names containing no match]' \ + {'(--regexp)-e','(-e)--regexp'}'[Use PATTERN as a regular expression]' \ + {'(--extended)-x','(-x)--extended'}'[Use PATTERN as an extended regular expression]' \ + {'(--installed)-J','(-J)--installed'}'[Search in installed ebuilds instead of the tree]' \ + {'(--eclass)-E','(-E)--eclass'}'[Search in eclasses instead of ebuilds]' \ + {'(--skip-comments)-s','(-s)--skip-comments'}'[Skip comments lines]' \ + {'(--skip)-S','(-S)--skip'}'[Skip lines matching <arg>]:pattern' \ + {'(--before)-B','(-B)--before'}'[Print <arg> lines of leading context]:number' \ + {'(--after)-A','(-A)--after'}'[Print <arg> lines of trailing context]:number' \ + '*:pattern::' + ;; + qlist) + _arguments -s $common_args \ + {'(--installed)-I','(-I)--installed'}'[Just show installed packages]' \ + {'(--slots)-S','(-S)--slots'}'[Display installed packages with slots]' \ + {'(--repo)-R','(-R)--repo'}'[Display installed packages with repository]' \ + {'(--umap)-U','(-U)--umap'}'[Display installed packages with flags used]' \ + {'(--columns)-c','(-c)--columns'}'[Display column view]' \ + '--show-debug[Show /usr/lib/debug files]' \ + {'(--exact)-e','(-e)--exact'}'[Exact match (only CAT/PN or PN without PV)]' \ + {'(--all)-a','(-a)--all'}'[Show every installed package]' \ + {'(--dir)-d','(-d)--dir'}'[Only show directories]' \ + {'(--obj)-o','(-o)--obj'}'[Only show objects]' \ + {'(--sym)-s','(-s)--sym'}'[Only show symlinks]' \ + '*:packages:_gentoo_packages installed' + ;; + qlop) + _arguments -s $common_args \ + {'(--gauge)-g','(-g)--gauge'}'[Gauge number of times a package has been merged]' \ + {'(--time)-t','(-t)--time'}'[Calculate merge time for a specific package]' \ + {'(--human)-H','(-H)--human'}'[Print seconds in human readable format (needs -t)]' \ + {'(--list)-l','(-l)--list'}'[Show merge history]' \ + {'(--unlist)-u','(-u)--unlist'}'[Show unmerge history]' \ + {'(--sync)-s','(-s)--sync'}'[Show sync history]' \ + {'(--current)-c','(-c)--current'}'[Show current emerging packages]' \ + {'(--logfile)-f','(-f)--logfile'}'[Read emerge logfile instead of /var/log/emerge.log]:log:_files' \ + '*:packages:_gentoo_packages available' + ;; + qsearch) + _arguments -s $common_args \ + {'(--all)-a','(-a)--all'}'[List the descriptions of every package in the cache]' \ + {'(--cache)-c','(-c)--cache'}'[Use the portage cache]' \ + {'(--ebuilds)-e','(-e)--ebuilds'}'[Use the portage ebuild tree]' \ + {'(--search)-s','(-s)--search'}'[Regex search package basenames]' \ + {'(--desc)-S','(-S)--desc'}'[Regex search package descriptions]' \ + {'(--name-only)-N','(-N)--name-only'}'[Only show package name]' \ + {'(--homepage)-H','(-H)--homepage'}'[Show homepage info]' \ + '*:pattern::' + ;; + qsize) + _arguments -s $common_args \ + {'(--filesystem)-f','(-f)--filesystem'}'[Show size used on disk]' \ + {'(--all)-a','(-a)--all'}'[Size all installed packages]' \ + {'(--sum)-s','(-s)--sum'}'[Include a summary]' \ + {'(--sum-only)-S','(-S)--sum-only'}'[Show just the summary]' \ + {'(--megabytes)-m','(-m)--megabytes'}'[Display size in megabytes]' \ + {'(--kilobytes)-k','(-k)--kilobytes'}'[Display size in kilobytes]' \ + {'(--bytes)-b','(-b)--bytes'}'[Display size in bytes]' \ + {'(--ignore)-i','(-i)--ignore'}'[Ignore regexp string]:pattern' \ + '*:packages:_gentoo_packages installed' + ;; + quse) + _arguments -s $common_args \ + {'(--exact)-e','(-e)--exact'}'[Show exact non regexp matching using strcmp]' \ + {'(--all)-a','(-a)--all'}'[Show annoying things in IUSE]' \ + {'(--keywords)-K','(-K)--keywords'}'[Use the KEYWORDS vs IUSE]' \ + {'(--license)-L','(-L)--license'}'[Use the LICENSE vs IUSE]' \ + {'(--describe)-D','(-D)--describe'}'[Describe the USE flag]' \ + {'(--format)-F','(-F)--format'}'[Use your own variable formats: -F NAME=]:format' \ + {'(--name-only)-N','(-N)--name-only'}'[Only show package name]' \ + '*:use flag:_gentoo_packages useflag' + ;; + qtbz2) + _arguments -s $common_args \ + {'(--dir)-d','(-d)--dir'}'[Change to specified directory]:directory:_files -/' \ + {'(--join)-j','(-j)--join'}'[Join tar.bz2 + xpak into a tbz2]:*:tar.bz2 file and xpak file:_files -g \*.\(tar.bz2\|xpak\)' \ + {'(--split)-s','(-s)--split'}'[Split a tbz2 into a tar.bz2 + xpak]:tbz2 file:_files -g \*.tbz2' \ + {'(--tarbz2)-t','(-t)--tarbz2'}'[Just split the tar.bz2]:tbz2 file:_files -g \*.tbz2' \ + {'(--xpak)-x','(-x)--xpak'}'[Just split the xpak]:tbz2 file:_files -g \*.tbz2' \ + {'(--stdout)-O','(-O)--stdout'}'[Write files to stdout]' + ;; + qpkg) + _arguments -s $common_args \ + {'(--clean)-c','(-c)--clean'}'[clean pkgdir of unused binary files]' \ + {'(--eclean)-E','(-E)--eclean'}'[clean pkgdir of files not in the tree anymore (slow)]' \ + {'(--pretend)-p','(-p)--pretend'}'[pretend only]' \ + {'(--pkgdir)-P','(-P)--pkgdir'}'[alternate package directory]:alternate pkgdir:_files -/' \ + '*:Installed packages:_gentoo_packages installed_versions' + ;; + qxpak) + _arguments -s $common_args \ + {'(--list)-l','(-l)--list'}'[List the contents of an archive]:xpak archive:_files -g \*.xpak' \ + {'(--extract)-x','(-x)--extract'}'[Extract the contents of an archive]:xpak archive:_files -g \*.xpak' \ + {'(--create)-c','(-c)--create'}'[Create an archive of a directory/files]:*:archive name and files to archive:_files' \ + {'(--dir)-d','(-d)--dir'}'[Change to specified directory]:directory:_files -/' \ + {'(--stdout)-O','(-O)--stdout'}'[Write files to stdout]' + ;; esac + +# vim: set et sw=2 sts=2 ts=2 ft=zsh: |