#!/bin/bash
# Copyright 1999-2004 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id: /var/cvsroot/gentoo-src/portage/bin/doins,v 1.7.2.2 2004/12/17 22:25:13 carpaski Exp $

if [ $# -lt 1 ] ; then
	echo "${0}: at least one argument needed"
	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 :("
	exit 1
fi

if [ "${INSDESTTREE%${D}*}" == "" ]; then
	echo "-------------------------------------------------------" 1>&2
	echo "You should not use \${D} with helpers." 1>&2
	echo "  --> ${INSDESTTREE}" 1>&2
	echo "-------------------------------------------------------" 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
