Skip to content

Instantly share code, notes, and snippets.

@freijon
Created May 12, 2022 11:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save freijon/5136b346bb06b1784c2851c46f98ca2b to your computer and use it in GitHub Desktop.
Save freijon/5136b346bb06b1784c2851c46f98ca2b to your computer and use it in GitHub Desktop.
shell-completion.eclass
# Copyright 2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
# @ECLASS: shell-completion.eclass
# @SUPPORTED_EAPIS: 6 7 8
# @MAINTAINER:
# placeholder@email
# @BLURB: A few quick functions to install various shell completion files
if [[ ! ${_SHELL_COMPLETION_ECLASS} ]]; then
_SHELL_COMPLETION_ECLASS=1
# Extend bash-completion-r1
inherit bash-completion-r1
case ${EAPI} in
6|7|8) ;;
*) die "${ECLASS}: EAPI ${EAPI} unsupported."
esac
# @FUNCTION: _shell-completion_get_fishcompdir
# @INTERNAL
# @DESCRIPTION:
# Get unprefixed fish completions directory
_shell-completion_get_fishcompdir() {
debug-print-function ${FUNCNAME} "${@}"
echo "/usr/share/fish/vendor_completions.d"
}
# @FUNCTION: _shell-completion_get_zshcompdir
# @INTERNAL
# @DESCRIPTION:
# Get unprefixed zsh completions directory
_shell-completion_get_zshcompdir() {
debug-print-function ${FUNCNAME} "${@}"
echo "/usr/share/zsh/site-functions"
}
# @FUNCTION: get_fishcompdir
# @DESCRIPTION:
# Get the fish completions directory.
get_fishcompdir() {
debug-print-function ${FUNCNAME} "${@}"
echo "${EPREFIX}$(_get_fishcompdir)"
}
# @FUNCTION: get_zshcompdir
# @DESCRIPTION:
# Get the zsh completions directory.
get_zshcompdir() {
debug-print-function ${FUNCNAME} "${@}"
echo "${EPREFIX}$(_get_zshcompdir)"
}
# @FUNCTION: dofishcomp
# @USAGE: <file> [...]
# @DESCRIPTION:
# Install fish completion files passed as args.
dofishcomp() {
debug-print-function ${FUNCNAME} "${@}"
(
insopts -m 0644
insinto "$(_shell-completion_get_fishcompdir)"
doins "${@}"
)
}
# @FUNCTION: dozshcomp
# @USAGE: <file> [...]
# @DESCRIPTION:
# Install zsh completion files passed as args.
dozshcomp() {
debug-print-function ${FUNCNAME} "${@}"
(
insopts -m 0644
insinto "$(_shell-completion_get_zshcompdir)"
doins "${@}"
)
}
# @FUNCTION: newfishcomp
# @USAGE: <file> <newname>
# @DESCRIPTION:
# Install fish file under a new name.
newfishcomp() {
debug-print-function ${FUNCNAME} "${@}"
(
insopts -m 0644
insinto "$(_shell-completion_get_fishcompdir)"
newins "${@}"
)
}
# @FUNCTION: newzshcomp
# @USAGE: <file> <newname>
# @DESCRIPTION:
# Install zsh file under a new name.
newzshcomp() {
debug-print-function ${FUNCNAME} "${@}"
(
insopts -m 0644
insinto "$(_shell-completion_get_zshcompdir)"
newins "${@}"
)
}
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment