From 40aaaa64e86ba6710bbeb31c4615a6ce80e75e11 Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Wed, 28 Apr 2021 20:21:43 +0100 Subject: gentoo resync : 28.04.2021 --- eclass/optfeature.eclass | 66 +++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 62 insertions(+), 4 deletions(-) (limited to 'eclass/optfeature.eclass') diff --git a/eclass/optfeature.eclass b/eclass/optfeature.eclass index e13fc3eba811..e6ab6b7f52db 100644 --- a/eclass/optfeature.eclass +++ b/eclass/optfeature.eclass @@ -1,4 +1,4 @@ -# Copyright 1999-2020 Gentoo Authors +# Copyright 1999-2021 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 # @ECLASS: optfeature.eclass @@ -14,6 +14,58 @@ esac if [[ -z ${_OPTFEATURE_ECLASS} ]]; then _OPTFEATURE_ECLASS=1 +# @ECLASS-VARIABLE: _OPTFEATURE_DEFAULT_HEADER +# @INTERNAL +# @DESCRIPTION: +# Default header printed ahead of optfeature output. Can be overridden +# by calling optfeature_header function. Will not be displayed if all optional +# dependencies are present. +_OPTFEATURE_DEFAULT_HEADER="Install additional packages for optional runtime features:" + +readonly _OPTFEATURE_DEFAULT_HEADER + +# @ECLASS-VARIABLE: _OPTFEATURE_HEADER +# @INTERNAL +# @DESCRIPTION: +# Default empty. Custom header printed ahead of optfeature output. +# Set by calling optfeature_header function with the desired output, or reset +# by optfeature_header without argument. Will not be displayed if all optional +# dependencies are present. +_OPTFEATURE_HEADER= + +# @ECLASS-VARIABLE: _OPTFEATURE_DOHEADER +# @INTERNAL +# @DESCRIPTION: +# If true, print header ahead of the first optfeature output. +_OPTFEATURE_DOHEADER=true + +# @FUNCTION: optfeature_header +# @USAGE: [custom header for follow-up optfeature calls] +# @DESCRIPTION: +# Set a custom header for follow-up optfeature calls, or reset to default +# header by calling it without argument. This can not only be used to customize +# the header but also to distinguish optfeature "groups", e.g. to list a number +# of different possible database backends, and then a number of optional +# regular runtime features. +# +# The following snippet will leave the default header untouched for the first +# two optfeature calls. Then a custom header is set that is going to be +# displayed in case dev-db/a or dev-db/b are not installed. +# @CODE +# pkg_postinst() { +# optfeature "foo support" app-misc/foo +# optfeature "bar support" app-misc/bar +# optfeature_header "Install optional database backends:" +# optfeature "a DB backend" dev-db/a +# optfeature "b DB backend" dev-db/b +# } +# @CODE +optfeature_header() { + debug-print-function ${FUNCNAME} "$@" + _OPTFEATURE_HEADER="${1}" + _OPTFEATURE_DOHEADER=true +} + # @FUNCTION: optfeature # @USAGE: [other atoms] # @DESCRIPTION: @@ -24,9 +76,11 @@ _OPTFEATURE_ECLASS=1 # app-misc/bar or app-misc/baz[bar] for optional bar support # and either both app-misc/a and app-misc/b or app-misc/c for alphabet support. # @CODE -# optfeature "foo support" app-misc/foo -# optfeature "bar support" app-misc/bar app-misc/baz[bar] -# optfeature "alphabet support" "app-misc/a app-misc/b" app-misc/c +# pkg_postinst() { +# optfeature "foo support" app-misc/foo +# optfeature "bar support" app-misc/bar app-misc/baz[bar] +# optfeature "alphabet support" "app-misc/a app-misc/b" app-misc/c +# } # @CODE optfeature() { debug-print-function ${FUNCNAME} "$@" @@ -51,6 +105,10 @@ optfeature() { fi done if [[ ${flag} -eq 0 ]]; then + if [[ ${_OPTFEATURE_DOHEADER} == true ]]; then + elog ${_OPTFEATURE_HEADER:-${_OPTFEATURE_DEFAULT_HEADER}} + _OPTFEATURE_DOHEADER=false + fi for i; do read -r -d '' -a arr <<<"${i}" msg=" " -- cgit v1.2.3