#!/bin/bash
# Copyright 1999-2018 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

source "${PORTAGE_BIN_PATH}"/isolated-functions.sh || exit 1

mynum=${#}
if [ ${mynum} -lt 1 ] ; then
	__helpers_die "${0}: at least one argument needed"
	exit 1
fi

if ! ___eapi_has_prefix_variables; then
	ED=${D}
fi

if ! ___eapi_has_DESTTREE_INSDESTTREE; then
	[[ -n ${DESTTREE} ]] &&
		die "${0##*/}: \${DESTTREE} has been banned for EAPI '$EAPI'; use 'into' instead"
else
	# backwards compatibility
	_E_DESTTREE_=${DESTTREE}
fi

# newer EAPIs force /usr consistently with other /usr/share helpers
if ! ___eapi_domo_respects_into; then
	_E_DESTTREE_=/usr
fi

if [ ! -d "${ED%/}/${_E_DESTTREE_#/}/share/locale" ] ; then
	install -d "${ED%/}/${_E_DESTTREE_#/}/share/locale/"
fi

ret=0

for x in "$@" ; do
	if [ -e "${x}" ] ; then
		mytiny="${x##*/}"
		mydir="${ED%/}/${_E_DESTTREE_#/}/share/locale/${mytiny%.*}/LC_MESSAGES"
		if [ ! -d "${mydir}" ] ; then
			install -d "${mydir}"
		fi
		install -m0644 "${x}" "${mydir}/${MOPREFIX}.mo"
	else
		echo "!!! ${0##*/}: $x does not exist" 1>&2
		false
	fi
	((ret|=$?))
done

[[ $ret -ne 0 ]] && __helpers_die "${0##*/} failed"
exit $ret
