summaryrefslogtreecommitdiff
path: root/Completion/Redhat/Command
diff options
context:
space:
mode:
Diffstat (limited to 'Completion/Redhat/Command')
-rw-r--r--Completion/Redhat/Command/_rpm2
-rw-r--r--Completion/Redhat/Command/_scl5
-rw-r--r--Completion/Redhat/Command/_yum604
3 files changed, 391 insertions, 220 deletions
diff --git a/Completion/Redhat/Command/_rpm b/Completion/Redhat/Command/_rpm
index b2157bd48..b24213e3c 100644
--- a/Completion/Redhat/Command/_rpm
+++ b/Completion/Redhat/Command/_rpm
@@ -298,7 +298,7 @@ _rpm () {
${(f)"$(_call_program capabilities rpm -qa --queryformat '%\{requirename}\\n' 2>/dev/null)"} && ret=0
;;
relocate)
- if compset -P '*='; then
+ if compset -P 1 '*='; then
_description directories expl 'new path'
else
_description directories expl 'old path'
diff --git a/Completion/Redhat/Command/_scl b/Completion/Redhat/Command/_scl
index e1a4b69db..b7bba2b13 100644
--- a/Completion/Redhat/Command/_scl
+++ b/Completion/Redhat/Command/_scl
@@ -8,7 +8,8 @@ local -a state line force alts cmd
_arguments -C $force \
'(- 1)'{-l,--list}'[list installed software collections or packages within a collection]' \
- '(-l --list)1:action:(enable register deregister)' \
+ '(-l --list)1:action:(enable run load unload list-collections list-packages man register deregister)' \
+ '(- *)--help' \
'(-)*:collections:->collections' && ret=0
if [[ -n $state ]]; then
@@ -31,7 +32,7 @@ if [[ -n $state ]]; then
cmd='command:command:_cmdstring'
_alternative 'collections:collection:compadd
- $(_call_program collections ${words[1]} -l)' \
+ $(_call_program collections "${words[1]} list-collections || ${words[1]} -l")' \
$cmd && ret=0
fi
diff --git a/Completion/Redhat/Command/_yum b/Completion/Redhat/Command/_yum
index f4538060e..4698a3159 100644
--- a/Completion/Redhat/Command/_yum
+++ b/Completion/Redhat/Command/_yum
@@ -1,305 +1,475 @@
#compdef yum
# Main dispatcher
-_yum()
-{
- local curcontext="$curcontext" state lstate line
-
- _arguments -s \
- '(- *)'{-h,--help}'[show the help message]' \
- '(-t --tolerant)'{-t,--tolerant}'[be tolerant of errors]' \
- '(-C --cacheonly)'{-C,--cacheonly}'[run entirely from cache]' \
- '(-c --config)'{-c,--config=}'[config file location]:Yum conf file:_files' \
- '(-R --randomwait)'{-R,--randomwait=}'[maximum command wait time (in minutes)]:max wait time' \
- '(-d --debuglevel)'{-d,--debuglevel=}'[debug level (0-10)]:debug level' \
- '(-e --errorlevel)'{-e,--errorlevel=}'[error level (0-10)]:error level' \
- '(-y --assumeyes)'{-y,--assumeyes}'[answer yes for all questions]' \
- '--installroot=[set install root]:install root:_files -/' \
- '*--enablerepo=[enable or or more repositories]:repos to enable:_yum_disabled_repos_list' \
- '*--disablerepo=[disable one or more repositories]:disable repos:_yum_enabled_repos_list' \
- {*-x,*--exclude=}'[exclude package(s) by name or glob]:exclude packages' \
- '--version[show yum version]' \
- '--obsoletes[enable obsoletes processing during updates]' \
- '--nogpgcheck[disable gpg signature checking]' \
- '--noplugins[disable yum plugins]' \
- '--disablepresto[disable Presto plugin and don''''t download any deltarpms]' \
- '*::yum command:_yum_command'
-}
-
-(( $+functions[_yum_command] )) || _yum_command()
+_yum() {
+ local curcontext="$curcontext" state lstate line
+
+ _arguments -s \
+ '(- *)'{-h,--help}'[show the help message]' \
+ '(-t --tolerant)'{-t,--tolerant}'[be tolerant of errors]' \
+ '(-C --cacheonly)'{-C,--cacheonly}'[run entirely from cache]' \
+ '(-c --config)'{-c,--config=}'[config file location]:Yum conf file:_files' \
+ '(-R --randomwait)'{-R,--randomwait=}'[specify maximum command wait time]:max wait time (minutes)' \
+ '(-d --debuglevel)'{-d,--debuglevel=}'[debug level (0-10)]:debug level' \
+ '--showduplicates[show duplicates, in repos, in list/search commands]' \
+ '(-e --errorlevel)'{-e,--errorlevel=}'[error level (0-10)]:error level' \
+ '--rpmverbosity=[specify rpm debug level]:debug level' \
+ '(-q --quiet -v --verbose)'{-q,--quiet}'[quiet operation]' \
+ '(-q --quiet -v --verbose)'{-v,--verbose}'[verbose operation]' \
+ '(-y --assumeyes --assumeno)'{-y,--assumeyes}'[answer yes to all questions]' \
+ '(-y --assumeyes --assumeno)--assumeno[answer no to all questions]' \
+ '(- *)--version[display version information]' \
+ '--installroot=[set install root]:install root:_files -/' \
+ '*--enablerepo=[enable or or more repositories]:repository:_sequence _yum_disabled_repos' \
+ '*--disablerepo=[disable one or more repositories]:repository:_sequence _yum_enabled_repos' \
+ \*{-x,--exclude=}'[exclude package by name or glob]:package:_yum_all_pkgs' \
+ '--disableexcludes=[disable exclude]:exclude:(all main)' \
+ '--disableincludes=[disable include]:include' \
+ '--obsoletes[enable obsoletes processing during updates]' \
+ '--noplugins[disable yum plugins]' \
+ '--nogpgcheck[disable gpg signature checking]' \
+ '--disableplugin=[disable plugin]:plugin' \
+ '--enableplugin=[enable plugin]:plugin' \
+ '--skip-broken[skip packages with depsolving problems]' \
+ '--color=[control whether color is used]:(always auto never)' \
+ '--releasever=[set value of $releasever in yum config and repo files]:value' \
+ "--downloadonly[don't update, just download]" \
+ '--downloaddir=[specify alternate directory to store packages]:directort:_directories' \
+ '--setopt=[set arbitrary config and repo options]:option' \
+ '--bugfix[include bugfix relevant packages in updates]' \
+ '--security[include security relevant packages in updates]' \
+ '--advisory=[include packages needed to fix the given advisory]:advisory' \
+ '--bzs=[include packages needed to fix the given BZ]:BZ' \
+ '--cves=[include packages needed to fix the given CVE]:CVE' \
+ '--sec-severity=[include security relevant packages matching specific severity]:severity' \
+ {*-x,*--exclude=}'[exclude package(s) by name or glob]:exclude packages' \
+ '*::yum command:_yum_command'
+}
+
+(( $+functions[_yum_command] )) || _yum_command()
{
- local -a _yum_cmds
- _yum_cmds=(
- "install:install the latest version of a package or group of packages"
- "erase:remove an installed package (with its dependencies)"
- "remove:remove an installed package (with its dependencies)"
- "clean:clean local yum cache"
- "deplist:gives a list of all dependencies for a package"
- "check-update:check if any updates are available"
- "info:get description of available packages"
- "list:is used to list various information about packages"
- "groupinfo:get info on package groups"
- "groupinstall:install a package group or groups"
- "groupremove:remove a package group or groups"
- "grouplist:list package groups"
- "groupupdate:update a package group or groups"
- "localinstall:install packages with local rpm files"
- "localupdate:update packages with local rpm files"
- "makecache:makes a local yum cache"
- "provides:find out which package provides some feature or file"
- "whatprovides:find out which package provides some feature or file"
- "resolvedep:list packages providing the specified dependencies"
- "search:find any packages matching pattern"
- "shell:enter the 'yum shell'"
- "update:update one or more packages"
- "upgrade:upgrade one or more packages"
- )
-
- if (( CURRENT == 1 )); then
- _describe -t commands 'yum command' _yum_cmds || compadd "$@"
- else
- local curcontext="$curcontext"
-
- cmd="${${_yum_cmds[(r)$words[1]:*]%%:*}}"
- # Deal with any aliases
- case $cmd in
- remove) cmd="erase";;
- whatprovides) cmd="provides";;
- upgrade) cmd="update";;
- esac
-
- if (( $#cmd )); then
- curcontext="${curcontext%:*:*}:yum-${cmd}:"
-
- local update_policy
- zstyle -s ":completion:${curcontext}:" cache-policy update_policy
- if [[ -z "$update_policy" ]]; then
- zstyle ":completion:${curcontext}:" cache-policy _yum_caching_policy
- fi
-
- _call_function ret _yum_$cmd || _message 'no more arguments'
- else
- _message "unknown yum command: $words[1]"
- fi
- return ret
- fi
+ local -a _yum_cmds
+ _yum_cmds=(
+ "install:install the latest version of a package or group of packages"
+ "erase:remove an installed package (with its dependencies)"
+ "remove:remove an installed package (with its dependencies)"
+ "clean:clean local yum cache"
+ "deplist:gives a list of all dependencies for a package"
+ "check-update:check if any updates are available"
+ "info:get description of available packages"
+ "list:is used to list various information about packages"
+ "groupinfo:get info on package groups"
+ "groupinstall:install a package group or groups"
+ "groupremove:remove a package group or groups"
+ "grouplist:list package groups"
+ "groupupdate:update a package group or groups"
+ "localinstall:install packages with local rpm files"
+ "localupdate:update packages with local rpm files"
+ "makecache:makes a local yum cache"
+ "provides:find out which package provides some feature or file"
+ "whatprovides:find out which package provides some feature or file"
+ "resolvedep:list packages providing the specified dependencies"
+ "search:find any packages matching pattern"
+ "shell:enter the 'yum shell'"
+ "update:update one or more packages"
+ "upgrade:upgrade one or more packages"
+ "update-to:update one or more packages taking obsoletes into account"
+ "upgrade-to:upgrade one or more packages taking obsoletes into account"
+ "history:view past transactions"
+ "help:produce help for all or given command"
+ "load-transaction:load a saved transaction from a textfile"
+ "load-ts:load a saved transaction from a textfile"
+ "check:check for problems in the rpmdb"
+ "reinstall:reinstall a package"
+ "downgrade:downgrade a package"
+ "repolist:display the configured software repositories"
+ "distribution-synchronization:synchronize installed packages to the latest available versions"
+ "distro-sync:synchronize installed packages to the latest available versions"
+ )
+
+ if (( CURRENT == 1 )); then
+ _describe -t commands 'yum command' _yum_cmds
+ else
+ local curcontext="$curcontext" ret=1
+
+ cmd="${${_yum_cmds[(r)$words[1]:*]%%:*}}"
+ # Deal with any aliases
+ case $cmd in
+ remove) cmd="erase";;
+ whatprovides) cmd="provides";;
+ upgrade) cmd="update";;
+ upgrade-to) cmd="update";;
+ update-to) cmd="update";;
+ load-ts) cmd="load-transaction";;
+ distro-sync) cmd="distribution-synchronization";;
+ esac
+
+ if (( $#cmd )); then
+ curcontext="${curcontext%:*:*}:yum-${cmd}:"
+
+ local update_policy
+ zstyle -s ":completion:${curcontext}:" cache-policy update_policy
+ if [[ -z "$update_policy" ]]; then
+ zstyle ":completion:${curcontext}:" cache-policy _yum_caching_policy
+ fi
+
+ if [ "$cmd" = "help" ]; then
+ if (( CURRENT == 2 )); then
+ _describe -t commands 'yum commands' _yum_cmds && ret=0
+ else
+ # help takes one argument
+ _message 'no more arguments'
+ fi
+ elif ! _call_function ret _yum-$cmd; then
+ _default && ret=0
+ fi
+ else
+ # fallback to default completion for unknown commands
+ _default && ret=0
+ fi
+ return ret
+ fi
+}
+
+# Expand next argument after 'yum check'
+_yum-check() {
+ ##chkargs=("dependencies" "duplicates" "obsoletes" "provides" "all") # according to man page
+ ##chkargs=("dependencies" "duplicates" "all") # according to help
+ #chkargs=("dependencies" "duplicates" "provides" "all") # what works for me
+ _values -w 'check argument' dependencies duplicates provides all
+}
+
+# Expand next argument after 'yum repolist'
+_yum-repolist() {
+ _yum_get_repos
+ _alternative \
+ 'filters:filter:(all enabled disabled)' \
+ 'repositories:repository:compadd -a yum_enabled_repos yum_disabled_repos'
+}
+
+_yum_ids() {
+ # the last argument will be the first valid transaction ID to be suggested
+ # all other arguments are forwarded to compadd
+ #
+ # maxid is the last transaction ID known to yum
+ local maxid
+
+ maxid=${${(M)${(f)"$(_call_program transactions yum history stats)"}:#Transactions:*}##* }
+
+ # `$@' are the arguments
+ # `${(@)@[...]}' selects a subrange from $@
+ # `${(@)@[1,-2]}' are all except the last argument
+ # `$@[$#]' is the last argument, e.g. the first suggestable ID
+ compadd "${(@)@[1,-2]:/-J/-V}" -M "B:0=" {$@[$#]..$maxid}
+}
+
+_yum_ranges() {
+ if compset -P 1 '*..'; then
+ _yum_ids "$@" ${(S)IPREFIX#..}
+ elif compset -S '..*'; then
+ _yum_ids "$@" 1
+ else
+ _yum_ids "$@" -S '..' 1
+ fi
+}
+
+# Expand next argument after 'yum history'
+_yum-history() {
+ local expl
+ if (( CURRENT == 2 )); then
+ _wanted commands expl "yum history command" compadd info list \
+ packages-list packages-info summary addon-info redo undo \
+ roll-back new sync stats
+ elif (( CURRENT == 3 )); then
+ local -a ID_commands
+ local -a ID_range_commands
+ local -a package_commands
+ local -a alts
+ alts=()
+ #ID_commands=('summary' 'info' 'list' 'stats' 'addon-info')
+ ID_commands=('addon-info')
+ ID_range_commands=('summary' 'info' 'list' 'stats')
+ package_commands=('summary' 'info' 'list' 'stats' 'packages-list' 'packages-info')
+ #package_commands=('packages-list' 'packages-info')
+ # packages-list, packages-info : needs package name
+ # summary, info, list, stats : ID, ID range, package name
+ # addon-info : ID
+ # redo, undo, roll-back, sync : unknown
+
+ [[ -n "${ID_commands[(r)$words[2]]}" ]] && alts+=('special:special ID:(last)')
+ [[ -n "${ID_commands[(r)$words[2]]}" ]] && alts+=('regular:ID:_yum_ids 1')
+ [[ -n "${ID_range_commands[(r)$words[2]]}" ]] && alts+=('regular:transaction range:_yum_ranges')
+ [[ -n "${ID_range_commands[(r)$words[2]]}" ]] && alts+=('special:all transactions:(all)')
+ [[ -n "${package_commands[(r)$words[2]]}" ]] && alts+=("package:package:_yum_act_on_installed_pkgs")
+
+ if (( ${+alts[1]} )) ; then
+ _alternative "$alts[@]"
+ else
+ _default
+ fi
+ elif (( CURRENT == 4 )); then
+ if [ "$words[2]" = "addon-info" ]; then
+ _wanted arguments expl 'additional option' compadd saved_tx
+ fi
+ fi
}
+
# Fills the all pkg cache
_yum_all_pkgs()
{
- if ( [[ ${+_all_pkgs} -eq 0 ]] || _cache_invalid ALL ) &&
- ! _retrieve_cache ALL;
- then
- _all_pkgs=( $(yum -C list all | sed 's/\s.*//' | grep '\.' 2>/dev/null) )
- _store_cache ALL _all_pkgs
- fi
+ (( $+_yum_all_pkgs[1] )) && return
+ if _cache_invalid yum-all-packages || ! _retrieve_cache yum-all-packages; then
+ _yum_all_pkgs=( ${(M)${${(f)"$(_call_program packages yum -C list all)"}// *}:#*.*} )
+ _store_cache yum-all-packages _yum_all_pkgs
+ fi
}
# Fills the installed pkg cache
_yum_installed_pkgs()
{
- if ( [[ ${+_installed_pkgs} -eq 0 ]] || _cache_invalid INSTALLED ) &&
- ! _retrieve_cache INSTALLED;
- then
- _installed_pkgs=( $(yum -C list installed | sed 's/\s.*//' | grep '\.' 2>/dev/null) )
- _store_cache INSTALLED _installed_pkgs
- fi
+ (( $+_yum_installed_pkgs[1] )) && return
+ if _cache_invalid yum-installed || ! _retrieve_cache yum-installed; then
+ _yum_installed_pkgs=( ${(M)${${(f)"$(_call_program packages yum -C list installed)"}// *}:#*.*} )
+ _store_cache yum-installed _yum_installed_pkgs
+ fi
}
# Fills the available pkg cache
_yum_available_pkgs()
{
- if ( [[ ${+_available_pkgs} -eq 0 ]] || _cache_invalid AVAILABLE ) &&
- ! _retrieve_cache AVAILABLE;
- then
- _available_pkgs=( $(yum -C list available | sed 's/\s.*//' | grep '\.' 2>/dev/null) )
- _store_cache AVAILABLE _available_pkgs
- fi
+ (( $+_yum_available_pkgs[1] )) && return
+ if _cache_invalid yum-available || ! _retrieve_cache yum-available; then
+ _yum_available_pkgs=( ${(M)${${(f)"$(_call_program packages yum -C list available)"}// *}:#*.*} )
+ _store_cache yum-available _yum_available_pkgs
+ fi
}
# Fills the upgrade pkg cache
_yum_upgrade_pkgs()
{
- if ( [[ ${+_upgrade_pkgs} -eq 0 ]] || _cache_invalid UPGRADE ) &&
- ! _retrieve_cache UPGRADE;
- then
- _upgrade_pkgs=( $(yum -C list upgrade | sed 's/\s.*//' | grep '\.' 2>/dev/null) )
- _store_cache UPGRADE _upgrade_pkgs
- fi
+ (( $+_yum_upgrade_pkgs[1] )) && return
+ if _cache_invalid yum-upgrade || ! _retrieve_cache yum-upgrade; then
+ _yum_upgrade_pkgs=( ${(M)${${(f)"$(_call_program packages yum -C list upgrade)"}// *}:#*.*} )
+ _store_cache yum-upgrade _yum_upgrade_pkgs
+ fi
}
# Gets the list of defined repos
-yum_repos() {
- local trepo
- local -a tarray
- tarray=( $(egrep -h '(^\[.*\]|^enabled.*=)' /etc/yum.repos.d/*.repo /etc/yum.conf | sed -e 's/ //g' | sed -e 's/\[//g' | sed -e 's/\].*$//g' 2>/dev/null) )
- local -i eindex=0
- local -i dindex=0
- for line in $tarray; do
- if [[ "$line" = "enabled=1" ]]; then
- enabled_yum_repos=($enabled_yum_repos $trepo)
- elif [[ "$line" = "enabled=0" ]]; then
- disabled_yum_repos=($disabled_yum_repos $trepo)
- elif [[ "$line" != "main" ]]; then
- trepo=$line
- fi
- done
+_yum_get_repos() {
+ local trepo
+ local -a tarray
+ tarray=( $(egrep -h '(^\[.*\]|^enabled.*=)' /etc/yum.repos.d/*.repo /etc/yum.conf | sed -e 's/ //g' | sed -e 's/\[//g' | sed -e 's/\].*$//g' 2>/dev/null) )
+ local -i eindex=0
+ local -i dindex=0
+ for line in $tarray; do
+ if [[ "$line" = "enabled=1" ]]; then
+ yum_enabled_repos=($enabled_yum_repos $trepo)
+ elif [[ "$line" = "enabled=0" ]]; then
+ yum_disabled_repos=($yum_disabled_repos $trepo)
+ elif [[ "$line" != "main" ]]; then
+ trepo=$line
+ fi
+ done
}
-(( $+functions[_yum_disabled_repos_list] )) || _yum_disabled_repos_list()
-{
- compset -P '*,'
- compset -S ',*'
- yum_repos
- compadd "$@" -a -- disabled_yum_repos
+_yum_disabled_repos() {
+ _yum_get_repos
+ compadd "$@" -a -- yum_disabled_repos
+}
+
+_yum_enabled_repos() {
+ _yum_get_repos
+ compadd "$@" -a -- yum_enabled_repos
+}
+
+# Suggest installed packages
+_yum_act_on_installed_pkgs() {
+ local expl
+ _yum_installed_pkgs
+ _wanted packages expl 'package' compadd "$@" -a -- _yum_installed_pkgs
}
-(( $+functions[_yum_enabled_repos_list] )) || _yum_enabled_repos_list()
+# Completion function for distribution-synchronization|distro-sync
+(( $+functions[_yum-distribution-synchronization] )) || _yum-distribution-synchronization()
{
- compset -P '*,'
- compset -S ',*'
- yum_repos
- compadd "$@" -a -- enabled_yum_repos
+ _yum_act_on_installed_pkgs "$@"
}
# Completion function for erase|remove
-(( $+functions[_yum_erase] )) || _yum_erase()
+(( $+functions[_yum-erase] )) || _yum-erase()
+{
+ _yum_act_on_installed_pkgs "$@"
+}
+
+# Completion function for downgrade
+(( $+functions[_yum-downgrade] )) || _yum-downgrade()
+{
+ _yum_act_on_installed_pkgs "$@"
+}
+
+# Completion function for reinstall
+(( $+functions[_yum-reinstall] )) || _yum-reinstall()
+{
+ _yum_act_on_installed_pkgs "$@"
+}
+
+(( $+functions[_yum-groupinfo] )) || _yum-groupinfo()
+{
+ local expl
+ _wanted groups expl group compadd \
+ ${${(M)${(f)"$(_call_program groups yum grouplist -C)"}:# *}# }
+}
+
+(( $+functions[_yum-groupinstall] )) || _yum-groupinstall()
+{
+ local expl
+ _wanted groups expl group compadd \
+ ${${(M)${(f)"$(_call_program groups yum grouplist -C)"}:# *}# }
+}
+
+(( $+functions[_yum-groupremove] )) || _yum-groupremove()
+{
+ local expl
+ _wanted groups expl group compadd \
+ ${${(M)${(f)"$(_call_program groups yum grouplist -C installed)"}:# *}# }
+}
+
+(( $+functions[_yum-groupupdate] )) || _yum-groupupdate()
{
- _yum_installed_pkgs
- compadd "$@" -a -- _installed_pkgs
+ local expl
+ _wanted groups expl group compadd \
+ ${${(M)${(f)"$(_call_program groups yum grouplist -C installed)"}:# *}# }
}
# Completion function for install
-(( $+functions[_yum_install] )) || _yum_install()
+(( $+functions[_yum-install] )) || _yum-install()
{
- if ! [[ $PREFIX == */* ]]; then
- _yum_available_pkgs
- fi
+ if ! [[ $PREFIX == */* ]]; then
+ _yum_available_pkgs
+ fi
- local ret=1
- _tags files packages
- while _tags; do
- if _requested files; then
- compadd "$@" -a -- _available_pkgs
- fi
- if _requested packages; then
- _call_function - _yum_localinstall
- fi
- (( ret )) || break
- done
- return ret
+ local ret=1
+ _tags files packages
+ while _tags; do
+ if _requested files; then
+ compadd "$@" -a -- _yum_available_pkgs
+ fi
+ if _requested packages; then
+ _call_function - _yum_localinstall
+ fi
+ (( ret )) || break
+ done
+ return ret
+}
+
+# Completion function for load-transaction
+(( $+functions[_yum-load-transaction] )) || _yum-load-transaction()
+{
+ _files
}
# Completion function for localinstall
-(( $+functions[_yum_localinstall] )) || _yum_localinstall()
+(( $+functions[_yum-localinstall] )) || _yum-localinstall()
{
- _files -/ -g '(#i)*.rpm(-.)'
+ _files -/ -g '(#i)*.rpm(-.)'
}
# Completion function for localupdate
-(( $+functions[_yum_localupdate] )) || _yum_localupdate()
+(( $+functions[_yum-localupdate] )) || _yum-localupdate()
{
- _files -/ -g '(#i)*.rpm(-.)'
+ _files -/ -g '(#i)*.rpm(-.)'
}
# Completion function for update/upgrade
-(( $+functions[_yum_update] )) || _yum_update()
+(( $+functions[_yum-update] )) || _yum-update()
{
- _yum_upgrade_pkgs
- compadd "$@" -a -- _upgrade_pkgs
+ local expl
+ _yum_upgrade_pkgs
+ _wanted packages expl package compadd "$@" -a _yum_upgrade_pkgs
}
# Completion function for deplist
-(( $+functions[_yum_deplist] )) || _yum_deplist()
+(( $+functions[_yum-deplist] )) || _yum-deplist()
{
- _yum_available_pkgs
- compadd "$@" -a -- _available_pkgs
+ local expl
+ _yum_available_pkgs
+ _wanted packages expl package compadd "$@" -a _yum_available_pkgs
}
_yum_all()
{
- _yum_all_pkgs
- compadd "$@" -a -- _all_pkgs
+ _yum_all_pkgs
+ compadd "$@" -a -- _yum_all_pkgs
}
+
_yum_list_or_info()
{
- local -a listlist
- listlist=(
- "all:all packages in repositories"
- "available:packages available in repositories"
- "updates:packages with updates available"
- "installed:installed packages"
- "extras:packages installed that are not available in any yum repository"
- "obsoletes:packages installed that are obsoleted"
- "recent:packages recently added to repositories"
- )
-
- if (( CURRENT == 2 )); then
- _describe -t yum-list-subcmds "Yum info/list sub-commands" listlist || _yum_all
- else
- local subcmd
- subcmd="${${listlist[(r)$words[2]:*]%%:*}}"
- # offer packages selected by the subcommand
- case $subcmd in
- all) _yum_all;;
- installed) _yum_erase;;
- available) _yum_install;;
- updates) _yum_update;;
- esac
- fi
+ local -a listlist
+ listlist=(
+ "all:all packages in repositories"
+ "available:packages available in repositories"
+ "updates:packages with updates available"
+ "installed:installed packages"
+ "extras:packages installed that are not available in any yum repository"
+ "obsoletes:packages installed that are obsoleted"
+ "recent:packages recently added to repositories"
+ )
+
+ if (( CURRENT == 2 )); then
+ _describe -t filters "filter" listlist || _yum_all
+ else
+ # offer packages selected by the subcommand
+ case $words[2] in
+ installed) _yum-erase;;
+ available) _yum-install;;
+ updates) _yum-update;;
+ *extras|obsoletes|recent)
+ _wanted packages expl package compadd \
+ ${(M)${${(f)"$(_call_program packages yum -C list $words[2])"}// *}:#*.*}
+ ;;
+ *) _yum_all;;
+ esac
+ fi
}
# Completion function for list
-(( $+functions[_yum_list] )) || _yum_list()
+(( $+functions[_yum-list] )) || _yum-list()
{
- _yum_list_or_info
+ _yum_list_or_info
}
# Completion function for info
-(( $+functions[_yum_info] )) || _yum_info()
+(( $+functions[_yum-info] )) || _yum-info()
{
- _yum_list_or_info
+ _yum_list_or_info
}
# Completion function for provides|whatprovides
-(( $+functions[_yum_provides] )) || _yum_provides()
+(( $+functions[_yum-provides] )) || _yum-provides()
{
- _files
+ _files
}
-# Completion function for resolvedep
-(( $+functions[_yum_resolvedep] )) || _yum_resolvedep()
+# Completion function for clean
+(( $+functions[_yum-clean] )) || _yum-clean()
{
- _files
+ _values -w "Yum clean sub-commands" \
+ "all[all cache]" \
+ "cache[all cache]" \
+ "dbcache[DB cache]" \
+ "headers[cache headers]" \
+ "packages[cache packages]" \
+ "metadata[cache meta-data]"
}
-# Completion function for clean
-(( $+functions[_yum_clean] )) || _yum_clean()
-{
- local -a cleanlist
- cleanlist=(
- "all:all cache"
- "cache:all cache"
- "dbcache:DB cache"
- "headers:cache headers"
- "packages:cache packages"
- "metadata:cache meta-data"
- )
-
- if (( CURRENT == 2 )); then
- _describe -t yum-clean-subcmds "Yum clean sub-commands" cleanlist
- fi
-}
-
-_yum_caching_policy()
-{
+_yum_caching_policy() {
local _yumrepomds
local -a oldp
# rebuild if cache is more than a week old
- oldp=( "$1"(mw+1) )
- (( $#oldp )) && return 0
+ oldp=( "$1"(mw-1) )
+ (( $#oldp )) || return 0
_yumrepomds=( /var/cache/yum/**/repomd.xml )