From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 7C46315800A for ; Mon, 17 Jul 2023 14:24:25 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 9393DE087A; Mon, 17 Jul 2023 14:24:24 +0000 (UTC) Received: from smtp.gentoo.org (woodpecker.gentoo.org [140.211.166.183]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 7877AE087A for ; Mon, 17 Jul 2023 14:24:24 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 7B00C340D77 for ; Mon, 17 Jul 2023 14:24:23 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id D8CF0B78 for ; Mon, 17 Jul 2023 14:24:21 +0000 (UTC) From: "Florian Schmaus" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Florian Schmaus" Message-ID: <1689603662.d5e1f736c92d50438ee7dd19c5067e47044c99b3.flow@gentoo> Subject: [gentoo-commits] repo/gentoo:master commit in: eclass/ X-VCS-Repository: repo/gentoo X-VCS-Files: eclass/shell-completion.eclass X-VCS-Directories: eclass/ X-VCS-Committer: flow X-VCS-Committer-Name: Florian Schmaus X-VCS-Revision: d5e1f736c92d50438ee7dd19c5067e47044c99b3 X-VCS-Branch: master Date: Mon, 17 Jul 2023 14:24:21 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-Archives-Salt: 30a95821-8fc3-43e0-915e-a1b0d302bc5e X-Archives-Hash: e4d1a68fd66032c133527853d7895d9e commit: d5e1f736c92d50438ee7dd19c5067e47044c99b3 Author: Florian Schmaus gentoo org> AuthorDate: Mon Jul 17 14:20:05 2023 +0000 Commit: Florian Schmaus gentoo org> CommitDate: Mon Jul 17 14:21:02 2023 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=d5e1f736 shell-completion.eclass: new eclass, migrated from ::guru Signed-off-by: Florian Schmaus gentoo.org> eclass/shell-completion.eclass | 115 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) diff --git a/eclass/shell-completion.eclass b/eclass/shell-completion.eclass new file mode 100644 index 000000000000..debfb8ecd26f --- /dev/null +++ b/eclass/shell-completion.eclass @@ -0,0 +1,115 @@ +# Copyright 2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +# @ECLASS: shell-completion.eclass +# @SUPPORTED_EAPIS: 8 +# @PROVIDES: bash-completion-r1 +# @AUTHOR: +# Alfred Wingate +# @MAINTAINER: +# Jonas Frei +# Florian Schmaus +# @BLURB: a few quick functions to install various shell completion files +# @DESCRIPTION: +# This eclass provides a standardised way to install shell completions +# for popular shells. It inherits the already widely adopted +# 'bash-completion-r1', thus extending on its functionality. + +case ${EAPI} in + 8) ;; + *) die "${ECLASS}: EAPI ${EAPI:-0} not supported" +esac + +if [[ ! ${_SHELL_COMPLETION_ECLASS} ]]; then +_SHELL_COMPLETION_ECLASS=1 + +# Extend bash-completion-r1 +inherit bash-completion-r1 + +# @FUNCTION: _shell-completion_get_fishcompdir +# @INTERNAL +# @RETURN: unprefixed fish completions directory +_shell-completion_get_fishcompdir() { + echo "/usr/share/fish/vendor_completions.d" +} + +# @FUNCTION: _shell-completion_get_zshcompdir +# @INTERNAL +# @RETURN: unprefixed zsh completions directory +_shell-completion_get_zshcompdir() { + echo "/usr/share/zsh/site-functions" +} + +# @FUNCTION: get_fishcompdir +# @RETURN: the fish completions directory (with EPREFIX) +get_fishcompdir() { + debug-print-function ${FUNCNAME} "${@}" + + echo "${EPREFIX}$(_shell-completion_get_fishcompdir)" +} + +# @FUNCTION: get_zshcompdir +# @RETURN: the zsh completions directory (with EPREFIX) +get_zshcompdir() { + debug-print-function ${FUNCNAME} "${@}" + + echo "${EPREFIX}$(_shell-completion_get_zshcompdir)" +} + +# @FUNCTION: dofishcomp +# @USAGE: +# @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: +# @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: +# @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: +# @DESCRIPTION: +# Install zsh file under a new name. +newzshcomp() { + debug-print-function ${FUNCNAME} "${@}" + + ( + insopts -m 0644 + insinto "$(_shell-completion_get_zshcompdir)" + newins "${@}" + ) +} + +fi