| # Copyright 2004-2021 Gentoo Authors |
| # Distributed under the terms of the GNU General Public License v2 |
| |
| # @ECLASS: strip-linguas.eclass |
| # @MAINTAINER: |
| # Ulrich Müller |
| # @AUTHOR: |
| # Mike Frysinger <vapier@gentoo.org> |
| # @SUPPORTED_EAPIS: 5 6 7 8 |
| # @BLURB: convenience function for LINGUAS support |
| |
| case ${EAPI} in |
| 5|6|7|8) ;; |
| *) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;; |
| esac |
| |
| if [[ -z ${_STRIP_LINGUAS_ECLASS} ]]; then |
| _STRIP_LINGUAS_ECLASS=1 |
| |
| # @FUNCTION: strip-linguas |
| # @USAGE: [<allow LINGUAS>|<-i|-u> <directories of .po files>] |
| # @DESCRIPTION: |
| # Make sure that LINGUAS only contains languages that a package can |
| # support. The first form allows you to specify a list of LINGUAS. |
| # The -i builds a list of po files found in all the directories and uses |
| # the intersection of the lists. The -u builds a list of po files found |
| # in all the directories and uses the union of the lists. |
| strip-linguas() { |
| local d f ls newls nols |
| |
| if [[ $1 == "-i" ]] || [[ $1 == "-u" ]]; then |
| local op=$1; shift |
| ls=$(find "$1" -name '*.po' -exec basename {} .po ';'); shift |
| for d; do |
| if [[ ${op} == "-u" ]]; then |
| newls=${ls} |
| else |
| newls="" |
| fi |
| for f in $(find "${d}" -name '*.po' -exec basename {} .po ';'); do |
| if [[ ${op} == "-i" ]]; then |
| has ${f} ${ls} && newls+=" ${f}" |
| else |
| has ${f} ${ls} || newls+=" ${f}" |
| fi |
| done |
| ls=${newls} |
| done |
| else |
| ls="$@" |
| fi |
| |
| nols="" |
| newls="" |
| for f in ${LINGUAS}; do |
| if has ${f} ${ls}; then |
| newls+=" ${f}" |
| else |
| nols+=" ${f}" |
| fi |
| done |
| [[ -n ${nols} ]] \ |
| && einfo "Sorry, but ${PN} does not support the LINGUAS:" ${nols} |
| export LINGUAS=${newls:1} |
| } |
| |
| fi |