diff options
Diffstat (limited to 'completions/_yum')
-rw-r--r-- | completions/_yum | 102 |
1 files changed, 54 insertions, 48 deletions
diff --git a/completions/_yum b/completions/_yum index 224ea25..2899cb3 100644 --- a/completions/_yum +++ b/completions/_yum @@ -3,72 +3,79 @@ # Use of this file is deprecated. Upstream completion is available in # yum > 3.2.25, use that instead. -_yum_list() +_comp_cmd_yum__list() { if [[ $1 == all ]]; then # Try to strip in between headings like "Available Packages" # This will obviously only work for English :P - COMPREPLY=($(yum -d 0 -C list $1 "$cur*" 2>/dev/null | - command sed -ne '/^Available /d' -e '/^Installed /d' -e '/^Updated /d' \ - -e 's/[[:space:]].*//p')) + _comp_split COMPREPLY "$(yum -d 0 -C list "$1" "$cur*" 2>/dev/null | + command sed -ne '/^Available /d' -e '/^Installed /d' \ + -e '/^Updated /d' -e 's/[[:space:]].*//p')" else # Drop first line (e.g. "Updated Packages") - COMPREPLY=($(yum -d 0 -C list $1 "$cur*" 2>/dev/null | - command sed -ne 1d -e 's/[[:space:]].*//p')) + _comp_split COMPREPLY "$(yum -d 0 -C list "$1" "$cur*" 2>/dev/null | + command sed -ne 1d -e 's/[[:space:]].*//p')" fi } -_yum_repolist() +_comp_cmd_yum__compgen_repolist() { # -d 0 causes repolist to output nothing as of yum 3.2.22: # http://yum.baseurl.org/ticket/83 # Drop first ("repo id repo name") and last ("repolist: ...") rows - yum --noplugins -C repolist $1 2>/dev/null | - command sed -ne '/^repo\s\s*id/d' -e '/^repolist:/d' -e 's/[[:space:]].*//p' + _comp_compgen_split -- "$( + yum --noplugins -C repolist "$1" 2>/dev/null | + command sed -ne '/^repo[[:space:]]\{1,\}id/d' -e '/^repolist:/d' \ + -e 's/[[:space:]].*//p' + )" } -_yum_plugins() +_comp_cmd_yum__compgen_plugins() { - command ls /usr/lib/yum-plugins/*.py{,c,o} 2>/dev/null | - command sed -ne 's|.*/\([^./]*\)\.py[co]\{0,1\}$|\1|p' | sort -u + local -a files + _comp_expand_glob files '/usr/lib/yum-plugins/*.py{,c,o}' || return + _comp_compgen -U files split -- "$( + printf '%s\n' "${files[@]}" | + command sed -ne 's|.*/\([^./]*\)\.py[co]\{0,1\}$|\1|p' | sort -u + )" } -_yum() +_comp_cmd_yum() { - local cur prev words cword split - _init_completion -s || return + local cur prev words cword was_split comp_args + _comp_initialize -s -- "$@" || return - local special i - for ((i = 1; i < ${#words[@]} - 1; i++)); do + local special="" i + for ((i = 1; i < cword; i++)); do if [[ ${words[i]} == @(install|update|upgrade|remove|erase|deplist|info) ]]; then special=${words[i]} break fi done - if [[ -v special ]]; then + if [[ $special ]]; then # TODO: install|update|upgrade should not match *src.rpm - if [[ $cur == @(*/|[.~])* && \ + if [[ $cur == @(*/|[.~])* && $special == @(deplist|install|update|upgrade) ]]; then - _filedir rpm + _comp_compgen_filedir rpm return fi case $special in install) - _yum_list available + _comp_cmd_yum__list available return ;; deplist | info) - _yum_list all + _comp_cmd_yum__list all return ;; upgrade | update) - _yum_list updates + _comp_cmd_yum__list updates return ;; remove | erase) - # _rpm_installed_packages is not arch-qualified - _yum_list installed + # _comp_xfunc_rpm_installed_packages is not arch-qualified + _comp_cmd_yum__list installed return ;; esac @@ -76,44 +83,43 @@ _yum() case $prev in list) - COMPREPLY=($(compgen -W 'all available updates installed extras - obsoletes recent' -- "$cur")) + _comp_compgen -- -W 'all available updates installed extras + obsoletes recent' ;; clean) - COMPREPLY=($(compgen -W 'packages headers metadata cache dbcache - all' -- "$cur")) + _comp_compgen -- -W 'packages headers metadata cache dbcache all' ;; repolist) - COMPREPLY=($(compgen -W 'all enabled disabled' -- "$cur")) + _comp_compgen -- -W 'all enabled disabled' ;; localinstall | localupdate) # TODO: should not match *src.rpm - _filedir rpm + _comp_compgen_filedir rpm ;; -d | -e) - COMPREPLY=($(compgen -W '{0..10}' -- "$cur")) + _comp_compgen -- -W '{0..10}' ;; -c) - _filedir + _comp_compgen_filedir ;; --installroot) - _filedir -d + _comp_compgen_filedir -d ;; --enablerepo) - COMPREPLY=($(compgen -W '$(_yum_repolist disabled)' -- "$cur")) + _comp_cmd_yum__compgen_repolist disabled ;; --disablerepo) - COMPREPLY=($(compgen -W '$(_yum_repolist enabled)' -- "$cur")) + _comp_cmd_yum__compgen_repolist enabled ;; --disableexcludes) - COMPREPLY=($(compgen -W '$(_yum_repolist all) all main' \ - -- "$cur")) + _comp_cmd_yum__compgen_repolist all + _comp_compgen -a -- -W "all main" ;; --enableplugin | --disableplugin) - COMPREPLY=($(compgen -W '$(_yum_plugins)' -- "$cur")) + _comp_cmd_yum__compgen_plugins ;; --color) - COMPREPLY=($(compgen -W 'always auto never' -- "$cur")) + _comp_compgen -- -W 'always auto never' ;; -R | -x | --exclude) # argument required but no completions available @@ -124,21 +130,21 @@ _yum() return ;; *) - COMPREPLY=($(compgen -W 'install update check-update upgrade - remove erase list info provides whatprovides clean makecache - groupinstall groupupdate grouplist groupremove groupinfo - search shell resolvedep localinstall localupdate deplist - repolist help' -- "$cur")) + _comp_compgen -- -W 'install update check-update upgrade remove + erase list info provides whatprovides clean makecache + groupinstall groupupdate grouplist groupremove groupinfo search + shell resolvedep localinstall localupdate deplist repolist + help' ;; esac - $split && return + [[ $was_split ]] && return if [[ $cur == -* ]]; then - COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) + _comp_compgen_help [[ ${COMPREPLY-} == *= ]] && compopt -o nospace fi } && - complete -F _yum yum + complete -F _comp_cmd_yum yum # ex: filetype=sh |