AlaK4X
Linux lhjmq-records 5.15.0-118-generic #128-Ubuntu SMP Fri Jul 5 09:28:59 UTC 2024 x86_64



Your IP : 3.133.122.95


Current Path : /snap/core20/current/usr/share/bash-completion/completions/
Upload File :
Current File : //snap/core20/current/usr/share/bash-completion/completions/rpm

# bash completion for rpm                                  -*- shell-script -*-

# helper functions

_rpm_installed_packages()
{
    if [[ -r /var/log/rpmpkgs && \
        /var/log/rpmpkgs -nt /var/lib/rpm/Packages ]]; then
        # using RHL 7.2 or later - this is quicker than querying the DB
        COMPREPLY=( $(compgen -W "$(command sed -ne \
            's|^\([^[:space:]]\{1,\}\)-[^[:space:]-]\{1,\}-[^[:space:]-]\{1,\}\.rpm$|\1|p' \
            /var/log/rpmpkgs)" -- "$cur") )
    elif type rpmqpack &>/dev/null ; then
        # SUSE's rpmqpack is faster than rpm -qa
        COMPREPLY=( $(compgen -W '$(rpmqpack)' -- "$cur") )
    else
        COMPREPLY=( $(${1:-rpm} -qa --nodigest --nosignature \
            --queryformat='%{NAME} ' "$cur*" 2>/dev/null) )
    fi
}

_rpm_groups()
{
    local IFS=$'\n'
    COMPREPLY=( $(compgen -W "$(${1:-rpm} -qa --nodigest --nosignature \
        --queryformat='%{GROUP}\n' 2>/dev/null)" -- "$cur") )
}

_rpm_macros()
{
    # get a list of macros
    COMPREPLY=( $(compgen -W "$(${1:-rpm} --showrc | command sed -ne \
        's/^-\{0,1\}[0-9]\{1,\}[:=][[:space:]]\{1,\}\([^[:space:](]\{3,\}\).*/%\1/p')" \
        -- "$cur") )
}

_rpm_buildarchs()
{
    COMPREPLY=( $(compgen -W "$(${1:-rpm} --showrc | command sed -ne \
        's/^\s*compatible\s\s*build\s\s*archs\s*:\s*\(.*\)/\1/ p')" \
        -- "$cur") )
}

# rpm(8) completion
#
_rpm()
{
    local cur prev words cword split
    _init_completion -s || return

    if [[ $cword -eq 1 ]]; then
        # first parameter on line
        case $cur in
            --*)
                COMPREPLY=( $(compgen -W '--help --version --initdb
                    --checksig --addsign --delsign --rebuilddb --showrc
                    --setperms --setugids --eval --install --upgrade --query
                    --freshen --erase --verify --querytags --import' \
                        -- "$cur") )
                ;;
            *)
                COMPREPLY=( $(compgen -W '-e -E -F -i -q -t -U -V' -- "$cur") )
                ;;
        esac
        return
    fi

    case $prev in
        --dbpath|--excludepath|--prefix|--relocate|--root|-!(-*)r)
            _filedir -d
            return
            ;;
        --eval|-!(-*)E)
            _rpm_macros $1
            return
            ;;
        --pipe)
            compopt -o filenames
            COMPREPLY=( $(compgen -c -- "$cur") )
            return
            ;;
        --rcfile)
            _filedir
            return
            ;;
        --specfile)
            # complete on .spec files
            _filedir spec
            return
            ;;
        --whatenhances|--whatprovides|--whatrecommends|--whatrequires|\
        --whatsuggests|--whatsupplements)
            if [[ "$cur" == */* ]]; then
                _filedir
            else
                # complete on capabilities
                local IFS=$'\n' fmt
                case $prev in
                    *enhances) fmt=ENHANCENAME ;;
                    *provides) fmt=PROVIDENAME ;;
                    *recommends) fmt=RECOMMENDNAME ;;
                    *requires) fmt=REQUIRENAME ;;
                    *suggests) fmt=SUGGESTNAME ;;
                    *supplements) fmt=SUPPLEMENTNAME ;;
                esac
                COMPREPLY=( $(compgen -W "$($1 -qa --nodigest --nosignature \
                    --queryformat=\"%{$fmt}\\n\" 2>/dev/null |
                    command grep -vF '(none)')" -- "$cur") )
            fi
            return
            ;;
        --define|--fileid|--hdrid|--pkgid|-!(-*)D)
            # argument required but no completions available
            return
            ;;
    esac

    $split && return

    # options common to all modes
    local opts="--define= --eval= --macros= --nodigest --nosignature --rcfile=
        --quiet --pipe --verbose"

    case ${words[1]} in
        -[iFU]*|--install|--freshen|--upgrade)
            if [[ "$cur" == -* ]]; then
                COMPREPLY=( $(compgen -W "$opts --percent --force --test
                --replacepkgs --replacefiles --root --excludedocs --includedocs
                --noscripts --ignorearch --dbpath --prefix= --ignoreos --nodeps
                --allfiles --ftpproxy --ftpport --justdb --httpproxy --httpport
                --noorder --relocate= --badreloc --notriggers --excludepath=
                --ignoresize --oldpackage --queryformat --repackage
                --nosuggests" -- "$cur") )
            else
                _filedir '[rs]pm'
            fi
            ;;
        -e|--erase)
            if [[ "$cur" == -* ]]; then
                COMPREPLY=( $(compgen -W "$opts --allmatches --noscripts
                    --notriggers --nodeps --test --repackage" -- "$cur") )
            else
                _rpm_installed_packages $1
            fi
            ;;
        -q*|--query)
            # options common to all query types
            opts+=" --changelog --configfiles --conflicts --docfiles --dump
                --enhances --filesbypkg --filecaps --fileclass --filecolor
                --fileprovide --filerequire --filesbypkg --info --list
                --obsoletes --pipe --provides --queryformat= --requires
                --scripts --suggests --triggers --xml --recommends
                --supplements --filetriggers --licensefiles"

            if [[ "${words[*]}" == *\ -@(*([^ -])f|-file )* ]]; then
                # -qf completion
                if [[ "$cur" == -* ]]; then
                    COMPREPLY=( $(compgen -W "$opts --dbpath --fscontext
                        --last --root --state" -- "$cur") )
                else
                    _filedir
                fi
            elif [[ "${words[*]}" == *\ -@(*([^ -])g|-group )* ]]; then
                # -qg completion
                _rpm_groups $1
            elif [[ "${words[*]}" == *\ -@(*([^ -])p|-package )* ]]; then
                # -qp; uninstalled package completion
                if [[ "$cur" == -* ]]; then
                    COMPREPLY=( $(compgen -W "$opts --ftpport --ftpproxy
                        --httpport --httpproxy --nomanifest" -- "$cur") )
                else
                    _filedir '[rs]pm'
                fi
            else
                # -q; installed package completion
                if [[ "$cur" == -* ]]; then
                    COMPREPLY=( $(compgen -W "$opts --all --file --fileid
                        --dbpath --fscontext --ftswalk --group --hdrid --last
                        --package --pkgid --root= --specfile --state
                        --triggeredby --whatenhances --whatprovides
                        --whatrecommends --whatrequires --whatsuggests
                        --whatsupplements" \
                            -- "$cur") )
                elif [[ "${words[*]}" != *\ -@(*([^ -])a|-all )* ]]; then
                    _rpm_installed_packages $1
                fi
            fi
            ;;
        -K*|--checksig)
            if [[ "$cur" == -* ]]; then
                COMPREPLY=( $(compgen -W "$opts --nopgp --nogpg --nomd5" \
                    -- "$cur") )
            else
                _filedir '[rs]pm'
            fi
            ;;
        -[Vy]*|--verify)
            if [[ "$cur" == -* ]]; then
                COMPREPLY=( $(compgen -W "$opts --root= --dbpath --nodeps
                    --nogroup --nolinkto --nomode --nomtime --nordev --nouser
                    --nofiles --noscripts --nomd5 --querytags --specfile
                    --whatenhances --whatprovides --whatrecommends
                    --whatrequires --whatsuggests --whatsupplements" \
                        -- "$cur") )
            # check whether we're doing file completion
            elif [[ "${words[*]}" == *\ -@(*([^ -])f|-file )* ]]; then
                _filedir
            elif [[ "${words[*]}" == *\ -@(*([^ -])g|-group )* ]]; then
                _rpm_groups $1
            elif [[ "${words[*]}" == *\ -@(*([^ -])p|-package )* ]]; then
                _filedir '[rs]pm'
            else
                _rpm_installed_packages $1
            fi
            ;;
        --resign|--addsign|--delsign)
            _filedir '[rs]pm'
            ;;
        --setperms|--setgids)
            _rpm_installed_packages $1
            ;;
        --import|--dbpath|--root)
            if [[ "$cur" == -* ]]; then
                COMPREPLY=( $(compgen -W '--import --dbpath --root=' \
                    -- "$cur") )
            else
                _filedir
            fi
            ;;
    esac
    [[ $COMPREPLY == *= ]] && compopt -o nospace
} &&
complete -F _rpm rpm

_rpmbuild()
{
    local cur prev words cword split
    _init_completion -s || return

    local rpm="${1%build*}"
    [[ $rpm == $1 ]] || ! type $rpm &>/dev/null && rpm=

    case $prev in
        --buildroot|--root|--dbpath|-!(-*)r)
            _filedir -d
            return
            ;;
        --target)
            _rpm_buildarchs
            return
            ;;
        --eval|-!(-*)E)
            _rpm_macros $rpm
            return
            ;;
        --macros|--rcfile)
            _filedir
            return
            ;;
        --buildpolicy)
            local cfgdir=$($rpm --eval '%{_rpmconfigdir}' 2>/dev/null)
            if [[ $cfgdir ]]; then
                COMPREPLY=( $(compgen -W "$(command ls $cfgdir 2>/dev/null \
                    | command sed -ne 's/^brp-//p')" -- "$cur") )
            fi
            ;;
        --define|--with|--without|-!(-*)D)
            return
            ;;
    esac

    $split && return

    if [[ $cur == -* ]]; then
        COMPREPLY=( $(compgen -W "$(_parse_help "$1")" -- "$cur") )
        [[ $COMPREPLY == *= ]] && compopt -o nospace
        return
    fi

    # Figure out file extensions to complete
    local word ext
    for word in "${words[@]}"; do
        case $word in
            -b?|--clean|--nobuild)
                ext=spec
                break
                ;;
            -t?|--tarbuild)
                ext='@(t?(ar.)@([gx]z|bz?(2))|tar?(.@(lzma|Z)))'
                break
                ;;
            --rebuild|--recompile)
                ext='@(?(no)src.r|s)pm'
                break
                ;;
        esac
    done
    [[ -n $ext ]] && _filedir $ext
} &&
complete -F _rpmbuild rpmbuild rpmbuild-md5

# ex: filetype=sh