mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-09-24 04:59:14 -07:00
Merge updates from master
This commit is contained in:
@@ -5,7 +5,11 @@
|
||||
# @MAINTAINER:
|
||||
# mgorny@gentoo.org
|
||||
# @SUPPORTED_EAPIS: 7 8
|
||||
# @PROVIDES: shell-completion
|
||||
# @BLURB: A few quick functions to install bash-completion files
|
||||
# @DESCRIPTION:
|
||||
# This eclass provides functions to install bash-completion files.
|
||||
# For EAPI 9 or newer, use shell-completion.eclass instead.
|
||||
# @EXAMPLE:
|
||||
#
|
||||
# @CODE
|
||||
@@ -26,118 +30,6 @@
|
||||
if [[ -z ${_BASH_COMPLETION_R1_ECLASS} ]]; then
|
||||
_BASH_COMPLETION_R1_ECLASS=1
|
||||
|
||||
inherit toolchain-funcs
|
||||
|
||||
case ${EAPI} in
|
||||
7|8) ;;
|
||||
*) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;;
|
||||
esac
|
||||
|
||||
# @FUNCTION: _bash-completion-r1_get_bashdir
|
||||
# @INTERNAL
|
||||
# @DESCRIPTION:
|
||||
# First argument is name of the string in bash-completion.pc
|
||||
# Second argument is the fallback directory if the string is not found
|
||||
# @EXAMPLE:
|
||||
# _bash-completion-r1_get_bashdir completionsdir /usr/share/bash-completion
|
||||
_bash-completion-r1_get_bashdir() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
|
||||
if $(tc-getPKG_CONFIG) --exists bash-completion &>/dev/null; then
|
||||
local path
|
||||
path=$($(tc-getPKG_CONFIG) --variable="${1}" bash-completion) || die
|
||||
# we need to return unprefixed, so strip from what pkg-config returns
|
||||
# to us, bug #477692
|
||||
echo "${path#"${EPREFIX}"}"
|
||||
else
|
||||
echo "${2}"
|
||||
fi
|
||||
}
|
||||
|
||||
# @FUNCTION: _bash-completion-r1_get_bashcompdir
|
||||
# @INTERNAL
|
||||
# @DESCRIPTION:
|
||||
# Get unprefixed bash-completion completions directory.
|
||||
_bash-completion-r1_get_bashcompdir() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
|
||||
_bash-completion-r1_get_bashdir completionsdir /usr/share/bash-completion/completions
|
||||
}
|
||||
|
||||
# @FUNCTION: _bash-completion-r1_get_bashhelpersdir
|
||||
# @INTERNAL
|
||||
# @DESCRIPTION:
|
||||
# Get unprefixed bash-completion helpers directory.
|
||||
_bash-completion-r1_get_bashhelpersdir() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
|
||||
_bash-completion-r1_get_bashdir helpersdir /usr/share/bash-completion/helpers
|
||||
}
|
||||
|
||||
# @FUNCTION: get_bashcompdir
|
||||
# @DESCRIPTION:
|
||||
# Get the bash-completion completions directory.
|
||||
get_bashcompdir() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
|
||||
echo "${EPREFIX}$(_bash-completion-r1_get_bashcompdir)"
|
||||
}
|
||||
|
||||
# @FUNCTION: get_bashhelpersdir
|
||||
# @INTERNAL
|
||||
# @DESCRIPTION:
|
||||
# Get the bash-completion helpers directory.
|
||||
get_bashhelpersdir() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
|
||||
echo "${EPREFIX}$(_bash-completion-r1_get_bashhelpersdir)"
|
||||
}
|
||||
|
||||
# @FUNCTION: dobashcomp
|
||||
# @USAGE: <file> [...]
|
||||
# @DESCRIPTION:
|
||||
# Install bash-completion files passed as args. Has EAPI-dependent failure
|
||||
# behavior (like doins).
|
||||
dobashcomp() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
|
||||
(
|
||||
insopts -m 0644
|
||||
insinto "$(_bash-completion-r1_get_bashcompdir)"
|
||||
doins "${@}"
|
||||
)
|
||||
}
|
||||
|
||||
# @FUNCTION: newbashcomp
|
||||
# @USAGE: <file> <newname>
|
||||
# @DESCRIPTION:
|
||||
# Install bash-completion file under a new name. Has EAPI-dependent failure
|
||||
# behavior (like newins).
|
||||
newbashcomp() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
|
||||
(
|
||||
insopts -m 0644
|
||||
insinto "$(_bash-completion-r1_get_bashcompdir)"
|
||||
newins "${@}"
|
||||
)
|
||||
}
|
||||
|
||||
# @FUNCTION: bashcomp_alias
|
||||
# @USAGE: <basename> <alias>...
|
||||
# @DESCRIPTION:
|
||||
# Alias <basename> completion to one or more commands (<alias>es).
|
||||
bashcomp_alias() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
|
||||
[[ ${#} -lt 2 ]] && die "Usage: ${FUNCNAME} <basename> <alias>..."
|
||||
local base=${1} f
|
||||
shift
|
||||
|
||||
for f; do
|
||||
dosym "${base}" "$(_bash-completion-r1_get_bashcompdir)/${f}" \
|
||||
|| return
|
||||
done
|
||||
}
|
||||
inherit shell-completion
|
||||
|
||||
fi
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
# Copyright 2023-2024 Gentoo Authors
|
||||
# Copyright 2023-2026 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
# @ECLASS: shell-completion.eclass
|
||||
# @MAINTAINER:
|
||||
# Jonas Frei <freijon@pm.me>
|
||||
# Florian Schmaus <flow@gentoo.org>
|
||||
# mgorny@gentoo.org
|
||||
# @AUTHOR:
|
||||
# Alfred Wingate <parona@protonmail.com>
|
||||
# @SUPPORTED_EAPIS: 8
|
||||
# @PROVIDES: bash-completion-r1
|
||||
# @SUPPORTED_EAPIS: 7 8 9
|
||||
# @BLURB: a few quick functions to install various shell completion files
|
||||
# @DESCRIPTION:
|
||||
# This eclass provides a standardised way to install shell completions
|
||||
@@ -16,15 +16,125 @@
|
||||
# 'bash-completion-r1', thus extending on its functionality.
|
||||
|
||||
case ${EAPI} in
|
||||
8) ;;
|
||||
7|8|9) ;;
|
||||
*) die "${ECLASS}: EAPI ${EAPI:-0} not supported"
|
||||
esac
|
||||
|
||||
if [[ -z ${_SHELL_COMPLETION_ECLASS} ]]; then
|
||||
_SHELL_COMPLETION_ECLASS=1
|
||||
|
||||
# Extend bash-completion-r1
|
||||
inherit bash-completion-r1
|
||||
if [[ ${EAPI} != 9 ]]; then
|
||||
inherit toolchain-funcs
|
||||
fi
|
||||
|
||||
# @FUNCTION: _bash-completion-r1_get_bashdir
|
||||
# @INTERNAL
|
||||
# @DESCRIPTION:
|
||||
# First argument is name of the string in bash-completion.pc
|
||||
# Second argument is the fallback directory if the string is not found
|
||||
# Note that the first argument is only used on EAPI < 9.
|
||||
# @EXAMPLE:
|
||||
# _bash-completion-r1_get_bashdir completionsdir /usr/share/bash-completion
|
||||
_bash-completion-r1_get_bashdir() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
|
||||
if [[ ${EAPI} != 9 ]] && $(tc-getPKG_CONFIG) --exists bash-completion &>/dev/null; then
|
||||
local path
|
||||
path=$($(tc-getPKG_CONFIG) --variable="${1}" bash-completion) || die
|
||||
# we need to return unprefixed, so strip from what pkg-config returns
|
||||
# to us, bug #477692
|
||||
echo "${path#"${EPREFIX}"}"
|
||||
return
|
||||
fi
|
||||
|
||||
echo "${2}"
|
||||
}
|
||||
|
||||
# @FUNCTION: _bash-completion-r1_get_bashcompdir
|
||||
# @INTERNAL
|
||||
# @DESCRIPTION:
|
||||
# Get unprefixed bash-completion completions directory.
|
||||
_bash-completion-r1_get_bashcompdir() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
|
||||
_bash-completion-r1_get_bashdir completionsdir /usr/share/bash-completion/completions
|
||||
}
|
||||
|
||||
# @FUNCTION: _bash-completion-r1_get_bashhelpersdir
|
||||
# @INTERNAL
|
||||
# @DESCRIPTION:
|
||||
# Get unprefixed bash-completion helpers directory.
|
||||
_bash-completion-r1_get_bashhelpersdir() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
|
||||
_bash-completion-r1_get_bashdir helpersdir /usr/share/bash-completion/helpers
|
||||
}
|
||||
|
||||
# @FUNCTION: get_bashcompdir
|
||||
# @DESCRIPTION:
|
||||
# Get the bash-completion completions directory.
|
||||
get_bashcompdir() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
|
||||
echo "${EPREFIX}$(_bash-completion-r1_get_bashcompdir)"
|
||||
}
|
||||
|
||||
# @FUNCTION: get_bashhelpersdir
|
||||
# @INTERNAL
|
||||
# @DESCRIPTION:
|
||||
# Get the bash-completion helpers directory.
|
||||
get_bashhelpersdir() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
|
||||
echo "${EPREFIX}$(_bash-completion-r1_get_bashhelpersdir)"
|
||||
}
|
||||
|
||||
# @FUNCTION: dobashcomp
|
||||
# @USAGE: <file> [...]
|
||||
# @DESCRIPTION:
|
||||
# Install bash-completion files passed as args. Has EAPI-dependent failure
|
||||
# behavior (like doins).
|
||||
dobashcomp() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
|
||||
(
|
||||
insopts -m 0644
|
||||
insinto "$(_bash-completion-r1_get_bashcompdir)"
|
||||
doins "${@}"
|
||||
)
|
||||
}
|
||||
|
||||
# @FUNCTION: newbashcomp
|
||||
# @USAGE: <file> <newname>
|
||||
# @DESCRIPTION:
|
||||
# Install bash-completion file under a new name. Has EAPI-dependent failure
|
||||
# behavior (like newins).
|
||||
newbashcomp() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
|
||||
(
|
||||
insopts -m 0644
|
||||
insinto "$(_bash-completion-r1_get_bashcompdir)"
|
||||
newins "${@}"
|
||||
)
|
||||
}
|
||||
|
||||
# @FUNCTION: bashcomp_alias
|
||||
# @USAGE: <basename> <alias>...
|
||||
# @DESCRIPTION:
|
||||
# Alias <basename> completion to one or more commands (<alias>es).
|
||||
bashcomp_alias() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
|
||||
[[ ${#} -lt 2 ]] && die "Usage: ${FUNCNAME} <basename> <alias>..."
|
||||
local base=${1} f
|
||||
shift
|
||||
|
||||
for f; do
|
||||
dosym "${base}" "$(_bash-completion-r1_get_bashcompdir)/${f}" \
|
||||
|| return
|
||||
done
|
||||
}
|
||||
|
||||
# @FUNCTION: _shell-completion_get_fishcompdir
|
||||
# @INTERNAL
|
||||
|
||||
Reference in New Issue
Block a user