treewide: improve template expansion
also: support *.toml as extra configuration dictionaries
This commit is contained in:
58
scripts/envsubst-single
Executable file
58
scripts/envsubst-single
Executable file
@@ -0,0 +1,58 @@
|
||||
#!/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}" </dev/null)" < "${src}" > "${dst}"
|
||||
__ret=$?
|
||||
break ; done
|
||||
if [ -z "${__ret}" ] ; then
|
||||
envsubst "$(envsubst-args.sh </dev/null)" < "${src}" > "${dst}"
|
||||
__ret=$?
|
||||
fi
|
||||
|
||||
while : ; do
|
||||
[ "${ENVSUBST_UNLINK_SRC}" = 1 ] || break
|
||||
[ "${src}" != '/dev/stdin' ] || break
|
||||
|
||||
rm -f "${src}"
|
||||
break ; done
|
||||
|
||||
exit ${__ret}
|
Reference in New Issue
Block a user