EAPI 5: new* commands can read from stdin, bug 263565.
authorUlrich Müller <ulm@gentoo.org>
Sat, 25 Aug 2012 20:00:51 +0000 (13:00 -0700)
committerZac Medico <zmedico@gentoo.org>
Sat, 25 Aug 2012 20:00:51 +0000 (13:00 -0700)
bin/ebuild-helpers/newins

index 345c2290ba1f6cb6f93db9dfd1ce53127174bcfd..cf6436bc833cc43c95e52c190dbfdd9f94223f06 100755 (executable)
@@ -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}"