aboutsummaryrefslogtreecommitdiff
path: root/bin/doins
blob: b3df481b5bd9e3e0ed591f046f3bf22a0af1caea (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
#!/bin/bash
# Copyright 1999-2004 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /local/data/ulm/cvs/history/var/cvsroot/gentoo-src/portage/bin/doins,v 1.9 2005/05/24 04:12:29 vapier 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