summaryrefslogtreecommitdiff
path: root/eclass/strip-linguas.eclass
blob: 718341b4a6264b81a5b02b43aaeccd3859d47c06 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# Copyright 2004-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

# @ECLASS: strip-linguas.eclass
# @MAINTAINER:
# Ulrich Müller <ulm@gentoo.org>
# @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