| # Copyright 1999-2015 Gentoo Foundation |
| # Distributed under the terms of the GNU General Public License v2 |
| # $Id$ |
| # |
| # @ECLASS: mozextension.eclass |
| # @MAINTAINER: |
| # Mozilla team <mozilla@gentoo.org> |
| # @BLURB: Install extensions for use in mozilla products. |
| # |
| if [[ ! ${_MOZEXTENSION} ]]; then |
| |
| # @ECLASS-VARIABLE: MOZEXTENSION_TARGET |
| # @DESCRIPTION: |
| # This variable allows the installation path for xpi_install |
| # to be overridden from the default app-global extensions path. |
| # Default is empty, which installs to predetermined hard-coded |
| # paths specified in the eclass. |
| : ${MOZEXTENSION_TARGET:=""} |
| |
| inherit eutils |
| |
| DEPEND="app-arch/unzip" |
| |
| mozversion_extension_location() { |
| case ${PN} in |
| firefox|firefox-bin) |
| if [[ $(get_version_component_range 1) -ge 21 ]] ; then |
| return 0 |
| fi |
| ;; |
| esac |
| |
| return 1 |
| } |
| |
| xpi_unpack() { |
| local xpi xpiname srcdir |
| |
| # Not gonna use ${A} as we are looking for a specific option being passed to function |
| # You must specify which xpi to use |
| [[ -z "$*" ]] && die "Nothing passed to the $FUNCNAME command. please pass which xpi to unpack" |
| |
| for xpi in "$@"; do |
| einfo "Unpacking ${xpi} to ${PWD}" |
| xpiname=$(basename ${xpi%.*}) |
| |
| if [[ "${xpi:0:2}" != "./" ]] && [[ "${xpi:0:1}" != "/" ]] ; then |
| srcdir="${DISTDIR}/" |
| fi |
| |
| [[ -s "${srcdir}${xpi}" ]] || die "${xpi} does not exist" |
| |
| case "${xpi##*.}" in |
| ZIP|zip|jar|xpi) |
| mkdir "${WORKDIR}/${xpiname}" && \ |
| unzip -qo "${srcdir}${xpi}" -d "${WORKDIR}/${xpiname}" || die "failed to unpack ${xpi}" |
| ;; |
| *) |
| einfo "unpack ${xpi}: file format not recognized. Ignoring." |
| ;; |
| esac |
| done |
| } |
| |
| |
| xpi_install() { |
| local emid |
| |
| # You must tell xpi_install which xpi to use |
| [[ ${#} -ne 1 ]] && die "$FUNCNAME takes exactly one argument, please specify an xpi to unpack" |
| |
| x="${1}" |
| cd ${x} |
| # determine id for extension |
| emid="$(sed -n -e '/install-manifest/,$ { /em:id/!d; s/.*[\">]\([^\"<>]*\)[\"<].*/\1/; p; q }' "${x}"/install.rdf)" \ |
| || die "failed to determine extension id" |
| if [[ -n ${MOZEXTENSION_TARGET} ]]; then |
| insinto "${MOZILLA_FIVE_HOME}"/${MOZEXTENSION_TARGET%/}/${emid} |
| elif $(mozversion_extension_location) ; then |
| insinto "${MOZILLA_FIVE_HOME}"/browser/extensions/${emid} |
| else |
| insinto "${MOZILLA_FIVE_HOME}"/extensions/${emid} |
| fi |
| doins -r "${x}"/* || die "failed to copy extension" |
| } |
| |
| _MOZEXTENSION=1 |
| fi |