commit:     ce3b957642e8aff38a6c923b8a5bc79ef9f20729
Author:     Nicola Smaniotto <smaniotto.nicola <AT> gmail <DOT> com>
AuthorDate: Thu Apr 14 09:13:00 2022 +0000
Commit:     Nicola Smaniotto <smaniotto.nicola <AT> gmail <DOT> com>
CommitDate: Thu Apr 14 09:26:30 2022 +0000
URL:        https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=ce3b9576

mpv-plugin.eclass: new eclass

Signed-off-by: Nicola Smaniotto <smaniotto.nicola <AT> gmail.com>

 eclass/mpv-plugin.eclass | 128 +++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 128 insertions(+)

diff --git a/eclass/mpv-plugin.eclass b/eclass/mpv-plugin.eclass
new file mode 100644
index 000000000..01212adec
--- /dev/null
+++ b/eclass/mpv-plugin.eclass
@@ -0,0 +1,128 @@
+# Copyright 2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# @ECLASS: mpv-plugin.eclass
+# @MAINTAINER:
+# Nicola Smaniotto <[email protected]>
+# @AUTHOR:
+# Nicola Smaniotto <[email protected]>
+# @SUPPORTED_EAPIS: 8
+# @BLURB: install mpv plugins
+# @DESCRIPTION:
+# This eclass simplifies the installation of mpv plugins into system-wide
+# directories.  Also handles the mpv dependency and provides an USE flag
+# for automatic loading of the plugin.
+
+case ${EAPI:-0} in
+       8) ;;
+       *) die "${ECLASS}: EAPI ${EAPI:-0} unsupported."
+esac
+
+EXPORT_FUNCTIONS src_install pkg_postinst
+
+# @ECLASS_VARIABLE: USE_MPV
+# @DEFAULT_UNSET
+# @PRE_INHERIT
+# @DESCRIPTION:
+# Controls adding media-video/mpv dependency.  The allowed values are:
+#
+# - rdepend -- add it to RDEPEND
+#
+# - depend -- add it to DEPEND+RDEPEND with the binding slot operator (the
+# default)
+
+# @ECLASS_VARIABLE: MPV_REQ_USE
+# @DEFAULT_UNSET
+# @PRE_INHERIT
+# @DESCRIPTION:
+# The list of USE flags required to be enabled on mpv, formed as a
+# USE-dependency string.
+#
+# Example:
+# @CODE@
+# MPV_REQ_USE="lua"
+# @CODE@
+
+if [[ ! ${_MPV_PLUGIN_ECLASS} ]]; then
+
+# @FUNCTION: _mpv-plugin_set_globals
+# @INTERNAL
+# @USAGE:
+# @DESCRIPTION:
+# Sets all the global output variables provided by this eclass.
+# This function must be called once, in global scope.
+_mpv-plugin_set_globals() {
+       local MPV_PKG_DEP
+
+       SLOT="0"
+       IUSE="+autoload"
+
+       MPV_PKG_DEP="media-video/mpv"
+       case ${USE_MPV:-depend} in
+                rdepend)
+                         ;;
+                depend)
+                         MPV_PKG_DEP+=":="
+                         ;;
+                *)
+                         die "Invalid USE_MPV=${USE_MPV}"
+                         ;;
+       esac
+       if [ ${MPV_REQ_USE} ]; then
+                MPV_PKG_DEP+="[${MPV_REQ_USE}]"
+       fi
+
+       RDEPEND="${MPV_PKG_DEP}"
+       if [[ ${USE_MPV} == depend ]]; then
+                DEPEND="${MPV_PKG_DEP}"
+       fi
+}
+_mpv-plugin_set_globals
+
+# @ECLASS_VARIABLE: MPV_PLUGIN_FILES
+# @DEFAULT_UNSET
+# @REQUIRED
+# @DESCRIPTION:
+# Array containing the list of files to be installed.
+
+# @FUNCTION: mpv-plugin_src_install
+# @USAGE:
+# @DESCRIPTION:
+# Install the specified files in ${D} and symlink them if the autoload flag is
+# set.
+# The ebuild must specify the file list in the MPV_PLUGIN_FILES array.
+mpv-plugin_src_install() {
+       if [[ ! ${MPV_PLUGIN_FILES} ]]; then
+                die "${ECLASS}: no files specified in MPV_PLUGIN_FILES, cannot 
install"
+       fi
+
+       insinto /usr/$(get_libdir)/mpv
+       for f in "${MPV_PLUGIN_FILES[@]}"; do
+                doins "${f}"
+                use autoload && dosym -r "/usr/$(get_libdir)/mpv/${f}" 
"/etc/mpv/scripts/${f}"
+       done
+
+       einstalldocs
+}
+
+# @FUNCTION: mpv-plugin_pkg_postinst
+# @USAGE:
+# @DESCRIPTION:
+# Warns the user of the existence of the autoload use flag.
+mpv-plugin_pkg_postinst() {
+       if ! use autoload; then
+                elog
+                elog "The plugin has not been installed to /etc/mpv/scripts 
for autoloading."
+                elog "You have to activate it manually by passing"
+                for f in "${MPV_PLUGIN_FILES[@]}"; do
+                         elog "  \"${EPREFIX}/usr/$(get_libdir)/mpv/${f}\""
+                done
+                elog "as script option to mpv or symlinking the library to 
\"scripts/\" in your mpv"
+                elog "config directory."
+                elog "Alternatively, activate the autoload use flag."
+                elog
+       fi
+}
+
+_MPV_PLUGIN_ECLASS=1
+fi

Reply via email to