commit:     2e47c02ef7a5d60b4dc5a42bd0ca80b21bb8b88d
Author:     Nicola Smaniotto <smaniotto.nicola <AT> gmail <DOT> com>
AuthorDate: Sun Apr 24 16:43:02 2022 +0000
Commit:     Nicola Smaniotto <smaniotto.nicola <AT> gmail <DOT> com>
CommitDate: Sun Apr 24 16:46:46 2022 +0000
URL:        https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=2e47c02e

mpv-plugin.eclass: handle multi-file scripts

The eclass behaves differently if a "main" file is present, since mpv
should only execute that one.

Also fix indentation to use tabs only.

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

 eclass/mpv-plugin.eclass | 74 ++++++++++++++++++++++++++++++++----------------
 1 file changed, 50 insertions(+), 24 deletions(-)

diff --git a/eclass/mpv-plugin.eclass b/eclass/mpv-plugin.eclass
index 01212adec..5c077e6d1 100644
--- a/eclass/mpv-plugin.eclass
+++ b/eclass/mpv-plugin.eclass
@@ -59,22 +59,22 @@ _mpv-plugin_set_globals() {
 
        MPV_PKG_DEP="media-video/mpv"
        case ${USE_MPV:-depend} in
-                rdepend)
-                         ;;
-                depend)
-                         MPV_PKG_DEP+=":="
-                         ;;
-                *)
-                         die "Invalid USE_MPV=${USE_MPV}"
-                         ;;
+               rdepend)
+                       ;;
+               depend)
+                       MPV_PKG_DEP+=":="
+                       ;;
+               *)
+                       die "Invalid USE_MPV=${USE_MPV}"
+                       ;;
        esac
        if [ ${MPV_REQ_USE} ]; then
-                MPV_PKG_DEP+="[${MPV_REQ_USE}]"
+               MPV_PKG_DEP+="[${MPV_REQ_USE}]"
        fi
 
        RDEPEND="${MPV_PKG_DEP}"
        if [[ ${USE_MPV} == depend ]]; then
-                DEPEND="${MPV_PKG_DEP}"
+               DEPEND="${MPV_PKG_DEP}"
        fi
 }
 _mpv-plugin_set_globals
@@ -85,6 +85,16 @@ _mpv-plugin_set_globals
 # @DESCRIPTION:
 # Array containing the list of files to be installed.
 
+# @FUNCTION: _mpv-plugin_has_main
+# @INTERNAL
+# @USAGE:
+# @DESCRIPTION:
+# Checks for the existance of a file named main. This means the plugin needs
+# all files to be installed together, and mpv will only run the one called 
main.
+_mpv-plugin_has_main() {
+       [[ " ${MPV_PLUGIN_FILES[*]} " =~ " main."[[:alnum:]]+" " ]]
+}
+
 # @FUNCTION: mpv-plugin_src_install
 # @USAGE:
 # @DESCRIPTION:
@@ -93,15 +103,27 @@ _mpv-plugin_set_globals
 # 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"
+               die "${ECLASS}: no files specified in MPV_PLUGIN_FILES, cannot 
install"
        fi
 
-       insinto /usr/$(get_libdir)/mpv
+       local MPV_INSTALL_DIR="/usr/$(get_libdir)/mpv"
+       if _mpv-plugin_has_main; then
+               MPV_INSTALL_DIR+="/${PN}"
+       fi
+       insinto "${MPV_INSTALL_DIR}"
+
        for f in "${MPV_PLUGIN_FILES[@]}"; do
-                doins "${f}"
-                use autoload && dosym -r "/usr/$(get_libdir)/mpv/${f}" 
"/etc/mpv/scripts/${f}"
+               doins "${f}"
        done
 
+       use autoload && if _mpv-plugin_has_main; then
+               dosym -r "${MPV_INSTALL_DIR}" "/etc/mpv/scripts/${PN}"
+       else
+               for f in "${MPV_PLUGIN_FILES[@]}"; do
+                       dosym -r "${MPV_INSTALL_DIR}/${f}" 
"/etc/mpv/scripts/${f}"
+               done
+       fi
+
        einstalldocs
 }
 
@@ -111,16 +133,20 @@ mpv-plugin_src_install() {
 # 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
+               elog
+               elog "The plugin has not been installed to /etc/mpv/scripts for 
autoloading."
+               elog "You have to activate it manually by passing"
+               if _mpv-plugin_has_main; then
+                       elog "  \"${EPREFIX}/usr/$(get_libdir)/mpv/${PN}\""
+               else
+                       for f in "${MPV_PLUGIN_FILES[@]}"; do
+                               elog "  
\"${EPREFIX}/usr/$(get_libdir)/mpv/${f}\""
+                       done
+               fi
+               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
 }
 

Reply via email to