aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Müller <ulm@gentoo.org>2012-08-25 20:00:51 (GMT)
committerZac Medico <zmedico@gentoo.org>2012-08-25 20:00:51 (GMT)
commitffe2a5b5f70be05565b5a3038637805319088743 (patch)
tree1b44a33abfc568cc7666dd7d9c8dbaccdf09f5de
parentnew*: symlink to generic newins implementation (diff)
downloadportage-ffe2a5b5f70be05565b5a3038637805319088743.zip
portage-ffe2a5b5f70be05565b5a3038637805319088743.tar.gz
portage-ffe2a5b5f70be05565b5a3038637805319088743.tar.bz2
EAPI 5: new* commands can read from stdin, bug 263565.
-rwxr-xr-xbin/ebuild-helpers/newins55
1 files changed, 39 insertions, 16 deletions
diff --git a/bin/ebuild-helpers/newins b/bin/ebuild-helpers/newins
index 345c229..cf6436b 100755
--- a/bin/ebuild-helpers/newins
+++ b/bin/ebuild-helpers/newins
@@ -11,27 +11,50 @@ if [[ -z ${T} ]] || [[ -z ${2} ]] ; then
exit 1
fi
-if [ ! -e "$1" ] ; then
- helpers_die "!!! ${helper}: $1 does not exist"
- exit 1
-fi
-
(($#>2)) && \
eqawarn "QA Notice: ${helper} called with more than 2 arguments: ${@:3}"
-cp_args="-f"
-if [[ ${helper} == newins ]] ; then
- case "${EAPI}" in
- 0|1|2|3)
- ;;
- *)
- cp_args+=" -P"
- ;;
- esac
+stdin=
+case ${EAPI} in
+ 0|1|2|3|4|4-python|4-slot-abi) ;;
+ *) [[ $1 = "-" ]] && stdin=yes ;;
+ esac
+
+rm -rf "${T}/$2"
+
+if [[ ${stdin} ]] ; then
+ if [[ -t 0 ]] ; then
+ helpers_die "!!! ${helper}: Input is from a terminal"
+ exit 1
+ fi
+ cat > "${T}/$2"
+ ret=$?
+else
+ if [[ ! -e $1 ]] ; then
+ helpers_die "!!! ${helper}: $1 does not exist"
+ exit 1
+ fi
+
+ cp_args="-f"
+ if [[ ${helper} == newins ]] ; then
+ case "${EAPI}" in
+ 0|1|2|3)
+ ;;
+ *)
+ cp_args+=" -P"
+ ;;
+ esac
+ fi
+
+ cp ${cp_args} "$1" "${T}/$2"
+ ret=$?
+fi
+
+if [[ ${ret} -ne 0 ]] ; then
+ helpers_die "${0##*/} failed"
+ exit ${ret}
fi
-rm -rf "${T}/$2" && \
-cp ${cp_args} "$1" "${T}/$2" && \
do${helper#new} "${T}/$2"
ret=$?
rm -rf "${T}/${2}"