From: freijon@pm.me
To: "gentoo-dev@lists.gentoo.org" <gentoo-dev@lists.gentoo.org>
Subject: [gentoo-dev] Re: shell-completion.eclass
Date: Fri, 14 Jul 2023 09:44:08 +0000 [thread overview]
Message-ID: <nf8v623r36PwsyluNVEUKMo-_KGMmlPTtTwDlPsXHGdaC5X19ciAtVFQdhyEXxy_jx_T1JxHu8hn4U-ljwr0EW0YtO7HfhhmbPifjVCQrQM=@pm.me> (raw)
In-Reply-To: <GMKs4Yd8E6KTLjrlYL_KYyvjCAachPWdkiut6qx5Q0R6aoJsgpypLDxVqTM6bajM4N072Nk4V70vXUkbC_IuLCMTOsv-1kM1ys0GovrKQQI=@pm.me>
[-- Attachment #1.1.1: Type: text/plain, Size: 4120 bytes --]
For convenience I attach the proposed eclass for review:
From: Jonas Frei <freijon@pm.me>Date: Fri Jul 14 11:13:14 2023 +0200
Subject: shell-completion.eclass
shell-completion.eclass: Add new eclass
Signed-off-by: Jonas Frei <freijon@pm.me>
diff --git a/eclass/shell-completion.eclass b/eclass/shell-completion.eclass
new file mode 100644
index 000000000000..b7b59802a5f7
--- /dev/null
+++ b/eclass/shell-completion.eclass
@@ -0,0 +1,114 @@
+# 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 <parona@protonmail.com>
+# @MAINTAINER:
+# Jonas Frei <freijon@pm.me>
+# @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: <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
------- Original Message -------
On Tuesday, July 11th, 2023 at 12:36 PM, freijon@pm.me <freijon@pm.me> wrote:
> On July 2nd we had a discussion on #gentoo-guru on IRC about adding shell-completion.eclass to ::gentoo. It's already well established on GURU and used in 23 ebuilds. It's basically bash-completion-r1, but also includes `zsh` and `fish` with standard install locations for the completion scripts.
> For the raison d'être, see: https://bugs.gentoo.org/843875
>
> Check out the eclass here: https://gitweb.gentoo.org/repo/proj/guru.git/tree/eclass/shell-completion.eclass
>
> I hereby ask for a code review and to add this eclass to the ::gentoo repository.
>
> I offer to continue maintaining the eclass and Florian Schmaus (Flow) offered to co-maintain the eclass.
>
> Please let me know your thoughts about this.
[-- Attachment #1.1.2.1: Type: text/html, Size: 8900 bytes --]
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.2: shell-completion.patch --]
[-- Type: text/x-patch; filename="shell-completion.patch"; name="shell-completion.patch", Size: 3091 bytes --]
From: Jonas Frei <freijon@pm.me>
Date: Fri Jul 14 11:13:14 2023 +0200
Subject: shell-completion.eclass
shell-completion.eclass: Add new eclass
Signed-off-by: Jonas Frei <freijon@pm.me>
diff --git a/eclass/shell-completion.eclass b/eclass/shell-completion.eclass
new file mode 100644
index 000000000000..b7b59802a5f7
--- /dev/null
+++ b/eclass/shell-completion.eclass
@@ -0,0 +1,114 @@
+# 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 <parona@protonmail.com>
+# @MAINTAINER:
+# Jonas Frei <freijon@pm.me>
+# @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: <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
[-- Attachment #1.3: publickey - freijon@pm.me - 0x259C4FF5.asc --]
[-- Type: application/pgp-keys, Size: 3068 bytes --]
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 855 bytes --]
prev parent reply other threads:[~2023-07-14 9:44 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-07-11 12:36 [gentoo-dev] shell-completion.eclass freijon
2023-07-14 9:44 ` freijon [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='nf8v623r36PwsyluNVEUKMo-_KGMmlPTtTwDlPsXHGdaC5X19ciAtVFQdhyEXxy_jx_T1JxHu8hn4U-ljwr0EW0YtO7HfhhmbPifjVCQrQM=@pm.me' \
--to=freijon@pm.me \
--cc=gentoo-dev@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox