treewide: improve template expansion
also: support *.toml as extra configuration dictionaries
This commit is contained in:
31
scripts/envsubst-dirs
Executable file
31
scripts/envsubst-dirs
Executable file
@@ -0,0 +1,31 @@
|
||||
#!/bin/sh
|
||||
set -ef
|
||||
|
||||
__template_list=$(mktemp)
|
||||
|
||||
find "$@" -follow -name '*.in' -type f -printf '%p\0' \
|
||||
| sort -zuV > "${__template_list}"
|
||||
|
||||
[ -s "${__template_list}" ] || {
|
||||
rm -f "${__template_list}"
|
||||
exit
|
||||
}
|
||||
|
||||
__have_args="${ENVSUBST_ARGS:+1}"
|
||||
if [ -z "${__have_args}" ] ; then
|
||||
## optimize envsubst-single invocation by caching argument list
|
||||
## ref: envsubst-single
|
||||
ENVSUBST_ARGS=$(mktemp)
|
||||
envsubst-args.sh > "${ENVSUBST_ARGS}"
|
||||
export ENVSUBST_ARGS
|
||||
fi
|
||||
|
||||
set +e ; __ret=0
|
||||
xargs -0r -n 1000 -a "${__template_list}" \
|
||||
envsubst-multi < /dev/null || __ret=1
|
||||
|
||||
[ -n "${__have_args}" ] || rm -f "${ENVSUBST_ARGS}"
|
||||
|
||||
rm -f "${__template_list}"
|
||||
|
||||
exit ${__ret}
|
20
scripts/envsubst-multi
Executable file
20
scripts/envsubst-multi
Executable file
@@ -0,0 +1,20 @@
|
||||
#!/bin/sh
|
||||
set -ef
|
||||
|
||||
__have_args="${ENVSUBST_ARGS:+1}"
|
||||
if [ -z "${__have_args}" ] ; then
|
||||
## optimize envsubst-single invocation by caching argument list
|
||||
## ref: envsubst-single
|
||||
ENVSUBST_ARGS=$(mktemp)
|
||||
envsubst-args.sh > "${ENVSUBST_ARGS}"
|
||||
export ENVSUBST_ARGS
|
||||
fi
|
||||
|
||||
set +e ; __ret=0
|
||||
for i ; do
|
||||
envsubst-single "$i" || __ret=1
|
||||
done
|
||||
|
||||
[ -n "${__have_args}" ] || rm -f "${ENVSUBST_ARGS}"
|
||||
|
||||
exit ${__ret}
|
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}
|
@@ -1,12 +0,0 @@
|
||||
#!/bin/sh
|
||||
set -f
|
||||
|
||||
while [ -n "${ENVSUBST_ARGS}" ] ; do
|
||||
[ -f "${ENVSUBST_ARGS}" ] || break
|
||||
[ -s "${ENVSUBST_ARGS}" ] || break
|
||||
|
||||
exec envsubst "$(cat "${ENVSUBST_ARGS}" </dev/null)" "$@"
|
||||
exit 126
|
||||
done
|
||||
|
||||
exec envsubst "$(envsubst-args.sh </dev/null)" "$@"
|
20
scripts/j2cfg-dirs
Executable file
20
scripts/j2cfg-dirs
Executable file
@@ -0,0 +1,20 @@
|
||||
#!/bin/sh
|
||||
set -ef
|
||||
|
||||
__template_list=$(mktemp)
|
||||
|
||||
find "$@" -follow -name '*.j2' -type f -printf '%p\0' \
|
||||
| sort -zuV > "${__template_list}"
|
||||
|
||||
[ -s "${__template_list}" ] || {
|
||||
rm -f "${__template_list}"
|
||||
exit
|
||||
}
|
||||
|
||||
set +e ; __ret=0
|
||||
xargs -0r -n 1000 -a "${__template_list}" \
|
||||
j2cfg-multi < /dev/null || __ret=1
|
||||
|
||||
rm -f "${__template_list}"
|
||||
|
||||
exit ${__ret}
|
Reference in New Issue
Block a user