# need functions from yum.bash
type -t _yum >/dev/null || . "${BASH_SOURCE%/*}/yum"

# bash completion for yum-utils

_yu_init_completion()
{
    if declare -F _get_comp_words_by_ref &>/dev/null ; then
        _get_comp_words_by_ref -n = cur prev words
    else
        cur=$1 prev=$2 words=("${COMP_WORDS[@]}")
    fi
    declare -F _split_longopt &>/dev/null && _split_longopt && split=true
}

# repomanage
_yu_repomanage()
{
    local cur prev words=() split=false
    _yu_init_completion "$2" "$3"

    case $prev in
        -h|--help)
            return 0
            ;;
        -k|--keep)
            COMPREPLY=( $( compgen -W '1 2 3 4 5 6 7 8 9' -- "$cur" ) )
            return 0
            ;;
    esac

    $split && return 0

    if [[ $cur == -* ]] ; then
        COMPREPLY=( $( compgen -W '--old --new --space --keep --nocheck
            --help' -- "$cur" ) )
        return 0
    fi

    COMPREPLY=( $( compgen -d -- "$cur" ) )
} &&
complete -F _yu_repomanage -o filenames repomanage repomanage.py

# package-cleanup
_yu_package_cleanup()
{
    local cur prev words=() split=false
    _yu_init_completion "$2" "$3"

    _yum_complete_baseopts "$cur" "$prev" 2>/dev/null && return 0

    case $prev in
        --leaf-regex|--qf|--queryformat)
            return 0
            ;;
        --count)
            COMPREPLY=( $( compgen -W '1 2 3 4 5 6 7 8 9' -- "$cur" ) )
            return 0
            ;;
    esac

    $split && return 0

    COMPREPLY=( $( compgen -W '$( _yum_baseopts 2>/dev/null ) --problems
        --queryformat --orphans --dupes --cleandupes --noscripts --leaves --all
        --leaf-regex --exclude-devel --exclude-bin --oldkernels --count
        --keepdevel' -- "$cur" ) )
} &&
complete -F _yu_package_cleanup -o filenames package-cleanup package-cleanup.py

# verifytree
_yu_verifytree()
{
    local cur prev words=() split=false
    _yu_init_completion "$2" "$3"

    case $prev in
        -h|--help|-t|--testopia)
            return 0
            ;;
    esac

    $split && return 0

    if [[ $cur == -* ]] ; then
        COMPREPLY=( $( compgen -W '--help --checkall --testopia --treeinfo' \
            -- "$cur" ) )
        return 0
    fi

    COMPREPLY=( $( compgen -d -- "$cur" ) )
} &&
complete -F _yu_verifytree -o filenames verifytree verifytree.py

# repo-graph
_yu_repo_graph()
{
    local cur prev words=() split=false
    _yu_init_completion "$2" "$3"

    case $prev in
        -h|--help)
            return 0
            ;;
        --repoid)
            _yum_helper repolist all "$cur" 2>/dev/null
            return 0
            ;;
        -c)
            COMPREPLY=( $( compgen -f -o plusdirs -X '!*.conf' -- "$cur" ) )
            return 0
            ;;
    esac

    $split && return 0

    COMPREPLY=( $( compgen -W '--help --repoid -c' -- "$cur" ) )
} &&
complete -F _yu_repo_graph -o filenames repo-graph repo-graph.py

# repo-rss
_yu_repo_rss()
{
    COMPREPLY=()

    case $3 in
        -h|--help|-l|-t|-d|-r|-a)
            return 0
            ;;
        -f)
            COMPREPLY=( $( compgen -f -o plusdirs -X '!*.xml' -- "$cur" ) )
            return 0
            ;;
        -c)
            COMPREPLY=( $( compgen -f -o plusdirs -X '!*.conf' -- "$cur" ) )
            return 0
            ;;
    esac

    COMPREPLY=( $( compgen -W '--help -f -l -t -d -r --tempcache -g -a -c' \
        -- "$2" ) )
    [[ $2 == -* ]] || _yum_helper repolist all "$2" 2>/dev/null || return 0
} &&
complete -F _yu_repo_rss -o filenames repo-rss repo-rss.py

# repoclosure
_yu_repoclosure()
{
    local cur prev words=() split=false
    _yu_init_completion "$2" "$3"

    case $prev in
        -h|--help|-a|--arch|--basearch|--repofrompath)
            return 0
            ;;
        -c|--config)
            COMPREPLY=( $( compgen -f -o plusdirs -X '!*.conf' -- "$cur" ) )
            return 0
            ;;
        -l|--lookaside|-r|--repoid)
            _yum_helper repolist all "$cur" 2>/dev/null
            return 0
            ;;
        -p|--pkg)
            _yum_list all "$cur" 2>/dev/null
            return 0
            ;;
        -g|--group)
            _yum_helper groups list all "$cur" 2>/dev/null
            return 0
            ;;
    esac

    $split && return 0

    COMPREPLY=( $( compgen -W '--help --config --arch --basearch --builddeps
        --lookaside --repoid --tempcache --quiet --newest --repofrompath --pkg
        --group' -- "$cur" ) )
} &&
complete -F _yu_repoclosure -o filenames repoclosure repoclosure.py

# repoquery
_yu_repoquery()
{
    local cur prev words=() split=false
    _yu_init_completion "$2" "$3"

    local word groupmode=false
    for word in "${words[@]}" ; do
        case $word in -g|--group) groupmode=true ; break ;; esac
    done

    case $prev in
        -h|--help|--version|--qf|--queryformat|--archlist|--repofrompath|\
        --setopt)
            return 0
            ;;
        -f|--file)
            COMPREPLY=( $( compgen -f -o plusdirs -- "$cur" ) )
            return 0
            ;;
        -l|--list|-i|--info|-R|--requires)
            if $groupmode ; then
                _yum_helper groups list all "$cur" 2>/dev/null
            else
                declare -F _yum_atgroups &>/dev/null && \
                    _yum_atgroups "$cur" || _yum_list all "$cur" 2>/dev/null
            fi
            return 0
            ;;
        --grouppkgs)
            COMPREPLY=( $( compgen -W 'all default optional mandatory' \
                -- "$cur" ) )
            return 0
            ;;
        --pkgnarrow)
            COMPREPLY=( $( compgen -W 'all available updates installed extras
                obsoletes recent repos' -- "$cur" ) )
            return 0
            ;;
        --repoid)
            _yum_helper repolist all "$cur" 2>/dev/null
            return 0
            ;;
        --enablerepo)
            _yum_helper repolist disabled "$cur" 2>/dev/null
            return 0
            ;;
        --disablerepo)
            _yum_helper repolist enabled "$cur" 2>/dev/null
            return 0
            ;;
        -c|--config)
            COMPREPLY=( $( compgen -f -o plusdirs -X '!*.conf' -- "$cur" ) )
            return 0
            ;;
        --level)
            COMPREPLY=( $( compgen -W '{1..9} all' -- "$cur" ) )
            return 0
            ;;
        --output)
            COMPREPLY=( $( compgen -W 'text ascii-tree dot-tree' -- "$cur" ) )
            return 0
            ;;
        --search-fields)
            COMPREPLY=( $( compgen -W 'name summary description' -- "$cur" ) )
            return 0
            ;;
        --installroot)
            COMPREPLY=( $( compgen -d -- "$cur" ) )
            return 0
            ;;
    esac

    $split && return 0

    if [[ $cur == -* ]] ; then
        COMPREPLY=( $( compgen -W '--version --help --list --info --file
            --queryformat --groupmember --all --requires --provides --obsoletes
            --conflicts --changelog --location --nevra --envra --nvr --source
            --srpm --resolve --exactdeps --recursive --whatprovides
            --whatrequires --whatobsoletes --whatconflicts --group --grouppkgs
            --archlist --pkgnarrow --installed --show-duplicates --repoid
            --enablerepo --disablerepo --repofrompath --plugins --quiet
            --verbose --cache --tempcache --querytags --config --level --output
            --search --search-fields --setopt --installroot' -- "$cur" ) )
        return 0
    fi

    declare -F _yum_atgroups &>/dev/null && \
        _yum_atgroups "$cur" || _yum_list all "$cur" 2>/dev/null
} &&
complete -F _yu_repoquery -o filenames repoquery repoquery.py

# yumdb
_yu_yumdb()
{
    local cur prev words=() split=false
    _yu_init_completion "$2" "$3"

    case $prev in
        -h|--help|-version)
            return 0
            ;;
        -c|--config)
            COMPREPLY=( $( compgen -f -o plusdirs -X '!*.conf' -- "$cur" ) )
            return 0
            ;;
        shell)
            COMPREPLY=( $( compgen -f -o plusdirs -- "$cur" ) )
            return 0
            ;;
    esac

    $split && return 0

    if [ $COMP_CWORD -le 1 ] ; then
        COMPREPLY=( $( compgen -W 'get set del rename rename-force copy search
            exist unset info sync undeleted shell --version --help --noplugins
            --config' -- "$cur" ) )
    fi
} &&
complete -F _yu_yumdb -o filenames yumdb yumdb.py

# repodiff
_yu_repodiff()
{
    local cur prev words=() split=false
    _yu_init_completion "$2" "$3"

    case $prev in
        -h|--help|--version|-n|--new|-o|--old|-a|--archlist)
            return 0
            ;;
    esac

    $split && return 0

    COMPREPLY=( $( compgen -W '--version --help --new --old --quiet --archlist
        --compare-arch --size --downgrade --simple' -- "$cur" ) )
} &&
complete -F _yu_repodiff repodiff repodiff.py

# yum-builddep
_yu_builddep()
{
    local cur prev words=() split=false
    _yu_init_completion "$2" "$3"

    _yum_complete_baseopts "$cur" "$prev" && return 0

    case $prev in
        --target)
            declare -F _rpm_buildarchs &>/dev/null && _rpm_buildarchs
            return 0
            ;;
    esac

    $split && return 0

    if [[ $cur == -* ]] ; then
        COMPREPLY=( $( compgen -W '$( _yum_baseopts 2>/dev/null )' -- "$cur" ) )
        return 0
    fi

    COMPREPLY=( $( compgen -f -o plusdirs -X "!*.spec" -- "$cur" ) )
    [[ $cur != */* && $cur != ~* ]] && _yum_list all "$cur" 2>/dev/null
} &&
complete -F _yu_builddep -o filenames yum-builddep yum-builddep.py

# debuginfo-install
_yu_debuginfo_install()
{
    local cur prev words=() split=false
    _yu_init_completion "$2" "$3"

    _yum_complete_baseopts "$cur" "$prev" && return 0

    $split && return 0

    if [[ $cur == -* ]] ; then
        COMPREPLY=( $( compgen -W '$( _yum_baseopts 2>/dev/null )
            --no-debuginfo-plugin' -- "$cur" ) )
        return 0
    fi

    _yum_list all "$cur"
} &&
complete -F _yu_debuginfo_install debuginfo-install debuginfo-install.py

# yum-debug-dump
_yu_debug_dump()
{
    COMPREPLY=()

    case $3 in
        -h|--help)
            return 0
            ;;
    esac

    if [[ $2 == -* ]] ; then
        COMPREPLY=( $( compgen -W '--help --norepos' -- "$2" ) )
        return 0
    fi

    COMPREPLY=( $( compgen -f -o plusdirs -- "$cur" ) )
} &&
complete -F _yu_debug_dump -o filenames yum-debug-dump yum-debug-dump.py

# yumdownloader
_yu_yumdownloader()
{
    local cur prev words=() split=false
    _yu_init_completion "$2" "$3"

    _yum_complete_baseopts "$cur" "$prev" 2>/dev/null && return 0

    case $prev in
        --destdir)
            COMPREPLY=( $( compgen -d -- "$cur" ) )
            return 0
            ;;
        --archlist)
            return 0
            ;;
    esac

    $split && return 0

    if [[ $cur == -* ]] ; then
        COMPREPLY=( $( compgen -W '$( _yum_baseopts 2>/dev/null ) --destdir
            --urls --resolve --source --archlist' -- "$cur" ) )
        return 0
    fi

    _yum_list all "$cur"
} &&
complete -F _yu_yumdownloader -o filenames yumdownloader yumdownloader.py

# Local variables:
# mode: shell-script
# sh-basic-offset: 4
# sh-indent-comment: t
# indent-tabs-mode: nil
# End:
# ex: ts=4 sw=4 et filetype=sh
