#!/bin/sh set -f src='-' dst='-' case $# in 0 ) ;; 1 ) src="$1" case "$1" in *.in ) dst="${1%".in"}" ;; esac ;; 2 ) src="$1" ; dst="$2" ;; * ) exit 1 ;; esac [ -n "${src}" ] || exit 1 [ -n "${dst}" ] || exit 1 if [ "${src}" = '-' ] ; then src=/dev/stdin ; fi if [ "${dst}" = '-' ] ; then dst=/dev/stdout ; fi is_same_file() { find -L "$1" -samefile "$2" -printf . -quit 2>/dev/null | grep -Fq . || return 1 } if is_same_file "${src}" /dev/stdin ; then src=/dev/stdin ; fi if is_same_file "${dst}" /dev/stdout ; then dst=/dev/stdout ; fi while : ; do if [ "${src}" = '/dev/stdin' ] && [ "${dst}" = '/dev/stdout' ] ; then break fi if is_same_file "${src}" "${dst}" ; then exit 1 fi break ; done set +e ; unset __ret while [ -n "${ENVSUBST_ARGS}" ] ; do [ -f "${ENVSUBST_ARGS}" ] || break [ -s "${ENVSUBST_ARGS}" ] || break envsubst "$(cat "${ENVSUBST_ARGS}" "${dst}" __ret=$? break ; done if [ -z "${__ret}" ] ; then envsubst "$(envsubst-args.sh "${dst}" __ret=$? fi while : ; do [ "${ENVSUBST_UNLINK_SRC}" = 1 ] || break [ "${src}" != '/dev/stdin' ] || break rm -f "${src}" break ; done exit ${__ret}