dev-util/qbs: version bump
[gentoo.git] / eclass / bash-completion-r1.eclass
1 # Copyright 1999-2014 Gentoo Foundation
2 # Distributed under the terms of the GNU General Public License v2
3 # $Id$
4
5 # @ECLASS: bash-completion-r1.eclass
6 # @MAINTAINER:
7 # mgorny@gentoo.org
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) ;;
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="$($(tc-getPKG_CONFIG) --variable=$1 bash-completion)"
45                 # we need to return unprefixed, so strip from what pkg-config returns
46                 # to us, bug #477692
47                 echo "${path#${EPREFIX}}"
48         else
49                 echo $2
50         fi
51 }
52
53 # @FUNCTION: _bash-completion-r1_get_bashcompdir
54 # @INTERNAL
55 # @DESCRIPTION:
56 # Get unprefixed bash-completion completions directory.
57 _bash-completion-r1_get_bashcompdir() {
58         debug-print-function ${FUNCNAME} "${@}"
59
60         _bash-completion-r1_get_bashdir completionsdir /usr/share/bash-completion/completions
61 }
62
63 # @FUNCTION: _bash-completion-r1_get_helpersdir
64 # @INTERNAL
65 # @DESCRIPTION:
66 # Get unprefixed bash-completion helpers directory.
67 _bash-completion-r1_get_bashhelpersdir() {
68         debug-print-function ${FUNCNAME} "${@}"
69
70         _bash-completion-r1_get_bashdir helpersdir /usr/share/bash-completion/helpers
71 }
72
73 # @FUNCTION: get_bashcompdir
74 # @DESCRIPTION:
75 # Get the bash-completion completions directory.
76 get_bashcompdir() {
77         debug-print-function ${FUNCNAME} "${@}"
78
79         echo "${EPREFIX}$(_bash-completion-r1_get_bashcompdir)"
80 }
81
82 # @FUNCTION: get_bashhelpersdir
83 # @INTERNAL
84 # @DESCRIPTION:
85 # Get the bash-completion helpers directory.
86 get_bashhelpersdir() {
87         debug-print-function ${FUNCNAME} "${@}"
88
89         echo "${EPREFIX}$(_bash-completion-r1_get_bashhelpersdir)"
90 }
91
92 # @FUNCTION: dobashcomp
93 # @USAGE: file [...]
94 # @DESCRIPTION:
95 # Install bash-completion files passed as args. Has EAPI-dependant failure
96 # behavior (like doins).
97 dobashcomp() {
98         debug-print-function ${FUNCNAME} "${@}"
99
100         (
101                 insinto "$(_bash-completion-r1_get_bashcompdir)"
102                 doins "${@}"
103         )
104 }
105
106 # @FUNCTION: newbashcomp
107 # @USAGE: file newname
108 # @DESCRIPTION:
109 # Install bash-completion file under a new name. Has EAPI-dependant failure
110 # behavior (like newins).
111 newbashcomp() {
112         debug-print-function ${FUNCNAME} "${@}"
113
114         (
115                 insinto "$(_bash-completion-r1_get_bashcompdir)"
116                 newins "${@}"
117         )
118 }
119
120 # @FUNCTION: bashcomp_alias
121 # @USAGE: <basename> <alias>...
122 # @DESCRIPTION:
123 # Alias <basename> completion to one or more commands (<alias>es).
124 bashcomp_alias() {
125         debug-print-function ${FUNCNAME} "${@}"
126
127         [[ ${#} -lt 2 ]] && die "Usage: ${FUNCNAME} <basename> <alias>..."
128         local base=${1} f
129         shift
130
131         for f; do
132                 dosym "${base}" "$(_bash-completion-r1_get_bashcompdir)/${f}"
133         done
134 }