dev-qt/qttest: stable 5.14.2 for ppc, bug #719732
[gentoo.git] / eclass / bash-completion-r1.eclass
1 # Copyright 1999-2018 Gentoo Foundation
2 # Distributed under the terms of the GNU General Public License v2
3
4 # @ECLASS: bash-completion-r1.eclass
5 # @MAINTAINER:
6 # mgorny@gentoo.org
7 # @SUPPORTED_EAPIS: 0 1 2 3 4 5 6 7
8 # @BLURB: A few quick functions to install bash-completion files
9 # @EXAMPLE:
10 #
11 # @CODE
12 # EAPI=5
13 #
14 # src_configure() {
15 #       econf \
16 #               --with-bash-completion-dir="$(get_bashcompdir)"
17 # }
18 #
19 # src_install() {
20 #       default
21 #
22 #       newbashcomp contrib/${PN}.bash-completion ${PN}
23 # }
24 # @CODE
25
26 inherit toolchain-funcs
27
28 case ${EAPI:-0} in
29         0|1|2|3|4|5|6|7) ;;
30         *) die "EAPI ${EAPI} unsupported (yet)."
31 esac
32
33 # @FUNCTION: _bash-completion-r1_get_bashdir
34 # @INTERNAL
35 # @DESCRIPTION:
36 # First argument is name of the string in bash-completion.pc
37 # Second argument is the fallback directory if the string is not found
38 # @EXAMPLE:
39 # _bash-completion-r1_get_bashdir completionsdir /usr/share/bash-completion
40 _bash-completion-r1_get_bashdir() {
41         debug-print-function ${FUNCNAME} "${@}"
42
43         if $(tc-getPKG_CONFIG) --exists bash-completion &>/dev/null; then
44                 local path
45                 path=$($(tc-getPKG_CONFIG) --variable="${1}" bash-completion) || die
46                 # we need to return unprefixed, so strip from what pkg-config returns
47                 # to us, bug #477692
48                 echo "${path#${EPREFIX}}"
49         else
50                 echo "${2}"
51         fi
52 }
53
54 # @FUNCTION: _bash-completion-r1_get_bashcompdir
55 # @INTERNAL
56 # @DESCRIPTION:
57 # Get unprefixed bash-completion completions directory.
58 _bash-completion-r1_get_bashcompdir() {
59         debug-print-function ${FUNCNAME} "${@}"
60
61         _bash-completion-r1_get_bashdir completionsdir /usr/share/bash-completion/completions
62 }
63
64 # @FUNCTION: _bash-completion-r1_get_helpersdir
65 # @INTERNAL
66 # @DESCRIPTION:
67 # Get unprefixed bash-completion helpers directory.
68 _bash-completion-r1_get_bashhelpersdir() {
69         debug-print-function ${FUNCNAME} "${@}"
70
71         _bash-completion-r1_get_bashdir helpersdir /usr/share/bash-completion/helpers
72 }
73
74 # @FUNCTION: get_bashcompdir
75 # @DESCRIPTION:
76 # Get the bash-completion completions directory.
77 get_bashcompdir() {
78         debug-print-function ${FUNCNAME} "${@}"
79
80         echo "${EPREFIX}$(_bash-completion-r1_get_bashcompdir)"
81 }
82
83 # @FUNCTION: get_bashhelpersdir
84 # @INTERNAL
85 # @DESCRIPTION:
86 # Get the bash-completion helpers directory.
87 get_bashhelpersdir() {
88         debug-print-function ${FUNCNAME} "${@}"
89
90         echo "${EPREFIX}$(_bash-completion-r1_get_bashhelpersdir)"
91 }
92
93 # @FUNCTION: dobashcomp
94 # @USAGE: <file> [...]
95 # @DESCRIPTION:
96 # Install bash-completion files passed as args. Has EAPI-dependant failure
97 # behavior (like doins).
98 dobashcomp() {
99         debug-print-function ${FUNCNAME} "${@}"
100
101         (
102                 insopts -m 0644
103                 insinto "$(_bash-completion-r1_get_bashcompdir)"
104                 doins "${@}"
105         )
106 }
107
108 # @FUNCTION: newbashcomp
109 # @USAGE: <file> <newname>
110 # @DESCRIPTION:
111 # Install bash-completion file under a new name. Has EAPI-dependant failure
112 # behavior (like newins).
113 newbashcomp() {
114         debug-print-function ${FUNCNAME} "${@}"
115
116         (
117                 insopts -m 0644
118                 insinto "$(_bash-completion-r1_get_bashcompdir)"
119                 newins "${@}"
120         )
121 }
122
123 # @FUNCTION: bashcomp_alias
124 # @USAGE: <basename> <alias>...
125 # @DESCRIPTION:
126 # Alias <basename> completion to one or more commands (<alias>es).
127 bashcomp_alias() {
128         debug-print-function ${FUNCNAME} "${@}"
129
130         [[ ${#} -lt 2 ]] && die "Usage: ${FUNCNAME} <basename> <alias>..."
131         local base=${1} f
132         shift
133
134         for f; do
135                 dosym "${base}" "$(_bash-completion-r1_get_bashcompdir)/${f}" \
136                         || return
137         done
138 }