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

source "${PORTAGE_BIN_PATH:-/usr/lib/portage/bin}"/isolated-functions.sh

if [ $# -lt 1 ] ; then
	echo "${0##*/}: at least one argument needed" 1>&2
	exit 1
fi

if [[ "$1" == "-r" ]] ; then
	DOINSRECUR=y
	shift
else
	DOINSRECUR=n
fi
[[ -z ${INSDEPTH} ]] && declare -i INSDEPTH=0
if [[ ${INSDEPTH} -gt 30 ]] ; then
	echo "${0##*/}: sanity check ... 30 directories is too much :(" 2>&1
	exit 1
fi

if [[ ${INSDESTTREE#${D}} != "${INSDESTTREE}" ]]; then
	vecho "-------------------------------------------------------" 1>&2
	vecho "You should not use \${D} with helpers." 1>&2
	vecho "  --> ${INSDESTTREE}" 1>&2
	vecho "-------------------------------------------------------" 1>&2
	exit 1
fi

[[ ! -d ${D}${INSDESTTREE} ]] && dodir "${INSDESTTREE}"

for x in "$@" ; do
	if [ -L "$x" ] ; then
		cp "$x" "${T}"
		mysrc="${T}/$(/usr/bin/basename "${x}")"
	elif [ -d "$x" ] ; then
		if [ "${DOINSRECUR}" == "n" ] ; then
			continue
		fi

		mydir="${INSDESTTREE}/$(basename "${x}")"
		find "${x}" -mindepth 1 -maxdepth 1 -exec \
			env \
				INSDESTTREE="${mydir}" \
				INSDEPTH=$((INSDEPTH+1)) \
				doins -r {} \;
		continue
	else
		mysrc="${x}"
	fi
	install ${INSOPTIONS} "${mysrc}" "${D}${INSDESTTREE}"
done
