Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: PATCH Completion for _yum (contains FIXMEs)
Hi,
thanks for the suggestions.
On 27.10.2016 03:30, Daniel Shahaf wrote:
> Something like this:
> .
> _id_ranges() { if compset -P '*..'; then _ids; else _ids -S ..; fi }
> .
> where _ids() is a function that adds "1" "2" "3" as completions.
>
> There should be examples of this in the revision ranges handling in
> _git/_hg/_subversion.
>
added the id ranges similar to your suggestion and checking _git.
>> [snap]
>
> This looks like it would be better written with _alternative:
>
> alts=()
> [[ -n "${ID_range_commands[(r)$words[2]]}" ]] && alts+=( 'id-ranges:id ranges:_id-ranges' )
> [[ -n "${package_commands[(r)$words[2]]}" ]] && alts+=( 'packages:packages:...' )
> ⋮
> (( ${+alts[1]} )) && _alternative "$alts[@]"
>
> To see the difference, set the «group-name» style to «''» (and
> optionally the «format» style to something with «%d» in it). You can
> see this in «ssh <TAB>» too (compare with/without those two styles).
also i'm using _alternative by now, but i'll bring it closer to your
suggestion soonish.
Cheers,
Paul
diff --git a/Completion/Redhat/Command/_yum b/Completion/Redhat/Command/_yum
index f453806..f9219f0 100644
--- a/Completion/Redhat/Command/_yum
+++ b/Completion/Redhat/Command/_yum
@@ -53,6 +53,18 @@ _yum()
"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
@@ -66,6 +78,10 @@ _yum()
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
@@ -77,7 +93,17 @@ _yum()
zstyle ":completion:${curcontext}:" cache-policy _yum_caching_policy
fi
+ if [ "$cmd" = "help" ]; then
+ if (( CURRENT == 2 )); then
+ local -a _yum_cmd_names
+ _yum_cmd_names=(${_yum_cmds%%:*})
+ _describe -t commands 'commands' _yum_cmd_names
+ else
+ _message 'no more arguments'
+ fi
+ else
_call_function ret _yum_$cmd || _message 'no more arguments'
+ fi
else
_message "unknown yum command: $words[1]"
fi
@@ -85,6 +111,101 @@ _yum()
fi
}
+# Expand next argument after 'yum check'
+_yum_check() {
+ if (( CURRENT == 2 )); then
+ local -a chkargs
+ #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
+ _describe -t arguments 'check arguments' chkargs
+ fi
+ return 0
+}
+
+# Expand next argument after 'yum repolist'
+_yum_repolist() {
+ if (( CURRENT == 2 )); then
+ local -a suggests
+ suggests=("all" "enabled" "disabled")
+ _describe -t arguments 'repolist arguments' suggests
+ fi
+ return 0
+}
+
+_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
+ # minusone is the number of arguments provided to _ids minus one
+ local maxid
+ local minusone
+
+ maxid=$(yum history stats | grep Transactions | sed "s/.*: //")
+ ((minusone=$#-1))
+ compadd "${(@)@[1,$minusone]}" $(echo {$@[$#]..$maxid})
+}
+
+_ranges() {
+ if compset -P '*..'; then
+ _ids ${(S)IPREFIX#..}
+ else
+ _ids -S '..' 1
+ fi
+}
+
+# Expand next argument after 'yum history'
+_yum_history() {
+ if (( CURRENT == 2 )); then
+ local -a historycommands
+ historycommands=('info' 'list' 'packages-list' 'packages-info' 'summary' 'addon-info' 'redo' 'undo' 'roll-back' 'new' 'sync' 'stats')
+ _describe -t commands 'yum history command' historycommands
+ fi
+ if (( CURRENT == 3 )); then
+ local -a ID_commands
+ local -a ID_range_commands
+ local -a package_commands
+ local -a suggests
+ suggests=()
+ #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
+ if [[ -n "${ID_commands[(r)$words[2]]}" ]]; then
+ suggests+=(':special IDs:(last)')
+ suggests+=(':IDs:_ids 1')
+ fi
+ if [[ -n "${ID_range_commands[(r)$words[2]]}" ]]; then
+ suggests+=(':transaction ranges:_ranges')
+ suggests+=(':all transactions:(all)')
+ fi
+ if [[ -n "${package_commands[(r)$words[2]]}" ]]; then
+ _yum_installed_pkgs
+ #suggests+=(":packages:($_installed_pkgs)")
+ suggests+=(":packages:_yum_act_on_installed_pkgs")
+ fi
+ if [[ 0 -eq ${#suggests} ]] ; then
+ _message "unknown expansion for: yum history $words[2]"
+ else
+ _alternative $suggests
+ fi
+ fi
+ if (( CURRENT == 4 )); then
+ if [ "$words[2]" = "addon-info" ]; then
+ local -a historyargs
+ historyargs=(saved_tx)
+ _describe 'additional option' historyargs
+ fi
+ fi
+}
+
+
# Fills the all pkg cache
_yum_all_pkgs()
{
@@ -163,11 +284,34 @@ yum_repos() {
compadd "$@" -a -- enabled_yum_repos
}
+# Suggest installed packages
+_yum_act_on_installed_pkgs() {
+ _yum_installed_pkgs
+ compadd "$@" -a -- _installed_pkgs
+}
+
+# Completion function for distribution-synchronization|distro-sync
+(( $+functions[_yum_distribution-synchronization] )) || _yum_distribution-synchronization()
+{
+ _yum_act_on_installed_pkgs
+}
+
# Completion function for erase|remove
(( $+functions[_yum_erase] )) || _yum_erase()
{
- _yum_installed_pkgs
- compadd "$@" -a -- _installed_pkgs
+ _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
}
# Completion function for install
@@ -191,6 +335,12 @@ yum_repos() {
return ret
}
+# Completion function for load-transaction
+(( $+functions[_yum_load-transaction] )) || _yum_load-transaction()
+{
+ _files
+}
+
# Completion function for localinstall
(( $+functions[_yum_localinstall] )) || _yum_localinstall()
{
diff --git a/Completion/Redhat/Command/_yum b/Completion/Redhat/Command/_yum
index f453806..4cc00cf 100644
--- a/Completion/Redhat/Command/_yum
+++ b/Completion/Redhat/Command/_yum
@@ -3,293 +3,443 @@
# 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'
+ 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()
{
- 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 || 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";;
+ 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
+ local -a _yum_cmd_names
+ _yum_cmd_names=(${_yum_cmds%%:*})
+ _describe -t commands 'commands' _yum_cmd_names
+ else
+ _message 'no more arguments'
+ fi
+ else
+ _call_function ret _yum_$cmd || _message 'no more arguments'
+ fi
+ else
+ _message "unknown yum command: $words[1]"
+ fi
+ return ret
+ fi
+}
+
+# Expand next argument after 'yum check'
+_yum_check() {
+ if (( CURRENT == 2 )); then
+ local -a chkargs
+ #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
+ _describe -t arguments 'check arguments' chkargs
+ fi
+ return 0
+}
+
+# Expand next argument after 'yum repolist'
+_yum_repolist() {
+ if (( CURRENT == 2 )); then
+ local -a suggests
+ suggests=("all" "enabled" "disabled")
+ _describe -t arguments 'repolist arguments' suggests
+ fi
+ return 0
+}
+
+_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
+ # minusone is the number of arguments provided to _ids minus one
+ local maxid
+ local minusone
+
+ maxid=$(yum history stats | grep Transactions | sed "s/.*: //")
+ ((minusone=$#-1))
+ compadd "${(@)@[1,$minusone]}" $(echo {$@[$#]..$maxid})
}
+_ranges() {
+ if compset -P '*..'; then
+ _ids ${(S)IPREFIX#..}
+ else
+ _ids -S '..' 1
+ fi
+}
+
+# Expand next argument after 'yum history'
+_yum_history() {
+ if (( CURRENT == 2 )); then
+ local -a historycommands
+ historycommands=('info' 'list' 'packages-list' 'packages-info' 'summary' 'addon-info' 'redo' 'undo' 'roll-back' 'new' 'sync' 'stats')
+ _describe -t commands 'yum history command' historycommands
+ fi
+ if (( CURRENT == 3 )); then
+ local -a ID_commands
+ local -a ID_range_commands
+ local -a package_commands
+ local -a suggests
+ suggests=()
+ #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
+ if [[ -n "${ID_commands[(r)$words[2]]}" ]]; then
+ suggests+=(':special IDs:(last)')
+ suggests+=(':IDs:_ids 1')
+ fi
+ if [[ -n "${ID_range_commands[(r)$words[2]]}" ]]; then
+ suggests+=(':transaction ranges:_ranges')
+ suggests+=(':all transactions:(all)')
+ fi
+ if [[ -n "${package_commands[(r)$words[2]]}" ]]; then
+ _yum_installed_pkgs
+ #suggests+=(":packages:($_installed_pkgs)")
+ suggests+=(":packages:_yum_act_on_installed_pkgs")
+ fi
+ if [[ 0 -eq ${#suggests} ]] ; then
+ _message "unknown expansion for: yum history $words[2]"
+ else
+ _alternative $suggests
+ fi
+ fi
+ if (( CURRENT == 4 )); then
+ if [ "$words[2]" = "addon-info" ]; then
+ local -a historyargs
+ historyargs=(saved_tx)
+ _describe 'additional option' historyargs
+ 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
+ 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
}
# 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
+ 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
}
# 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
+ 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
}
# 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
+ 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
}
# 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
+ 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
}
(( $+functions[_yum_disabled_repos_list] )) || _yum_disabled_repos_list()
{
- compset -P '*,'
- compset -S ',*'
- yum_repos
- compadd "$@" -a -- disabled_yum_repos
+ compset -P '*,'
+ compset -S ',*'
+ yum_repos
+ compadd "$@" -a -- disabled_yum_repos
}
(( $+functions[_yum_enabled_repos_list] )) || _yum_enabled_repos_list()
{
- compset -P '*,'
- compset -S ',*'
- yum_repos
- compadd "$@" -a -- enabled_yum_repos
+ compset -P '*,'
+ compset -S ',*'
+ yum_repos
+ compadd "$@" -a -- enabled_yum_repos
+}
+
+# Suggest installed packages
+_yum_act_on_installed_pkgs() {
+ _yum_installed_pkgs
+ compadd "$@" -a -- _installed_pkgs
+}
+
+# Completion function for distribution-synchronization|distro-sync
+(( $+functions[_yum_distribution-synchronization] )) || _yum_distribution-synchronization()
+{
+ _yum_act_on_installed_pkgs
}
# Completion function for erase|remove
(( $+functions[_yum_erase] )) || _yum_erase()
{
- _yum_installed_pkgs
- compadd "$@" -a -- _installed_pkgs
+ _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
}
# Completion function for 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 -- _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()
{
- _files -/ -g '(#i)*.rpm(-.)'
+ _files -/ -g '(#i)*.rpm(-.)'
}
# Completion function for localupdate
(( $+functions[_yum_localupdate] )) || _yum_localupdate()
{
- _files -/ -g '(#i)*.rpm(-.)'
+ _files -/ -g '(#i)*.rpm(-.)'
}
# Completion function for update/upgrade
(( $+functions[_yum_update] )) || _yum_update()
{
- _yum_upgrade_pkgs
- compadd "$@" -a -- _upgrade_pkgs
+ _yum_upgrade_pkgs
+ compadd "$@" -a -- _upgrade_pkgs
}
# Completion function for deplist
(( $+functions[_yum_deplist] )) || _yum_deplist()
{
- _yum_available_pkgs
- compadd "$@" -a -- _available_pkgs
+ _yum_available_pkgs
+ compadd "$@" -a -- _available_pkgs
}
_yum_all()
{
- _yum_all_pkgs
- compadd "$@" -a -- _all_pkgs
+ _yum_all_pkgs
+ compadd "$@" -a -- _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 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
}
# Completion function for list
(( $+functions[_yum_list] )) || _yum_list()
{
- _yum_list_or_info
+ _yum_list_or_info
}
# Completion function for info
(( $+functions[_yum_info] )) || _yum_info()
{
- _yum_list_or_info
+ _yum_list_or_info
}
# Completion function for provides|whatprovides
(( $+functions[_yum_provides] )) || _yum_provides()
{
- _files
+ _files
}
# Completion function for resolvedep
(( $+functions[_yum_resolvedep] )) || _yum_resolvedep()
{
- _files
+ _files
}
# 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
+ 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()
Messages sorted by:
Reverse Date,
Date,
Thread,
Author