summaryrefslogtreecommitdiff
blob: 40d841546d6d0579a83f2335dbee542717ade375 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# Gentoo Linux Bash Shell Command Completion
#
# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License, v2 or later

#
# gcc-config completion (from sys-devel/gcc-config)
#
_gcc_config() {
    local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]}
    local OPTS=(
        -C --nocolor
        -O --use-old
        -f --force
        -P --use-portage-chost
        -c --get-current-profile
        -l --list-profiles
        -S --split-profile
        -E --print-environ
        -B --get-bin-path
        -L --get-lib-path
        -X --get-stdcxx-incdir
    )
    _list_profiles() {
        gcc-config --nocolor --list-profiles 2>/dev/null | \
            sed -r -e 's/\[([^]]*)\] //g' -e 's/ \*//g'
    }

    if [[ ${cur} == -* ]] ; then
        COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "${cur}") )
        return 0
    elif [[ ${COMP_CWORD} -eq 1 ]] ; then
        COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "${cur}") )
        COMPREPLY+=( $(compgen -W '$(_list_profiles)' -- "${cur}" ))
        return 0
    fi

    case ${prev} in
        -O|--use-old|-P|--use-portage-chost|-c|--get-current-profile|-l|--list-profiles)
            COMPREPLY=()
            ;;
        *)
            COMPREPLY=( $(compgen -W '$(_list_profiles)' -- "${cur}") )
            ;;
    esac
} &&
complete -F _gcc_config gcc-config

# vim: ft=sh:et:ts=4:sw=4:tw=80