From ee869a9584be57efecd8b836c35d3c01f91c973d Mon Sep 17 00:00:00 2001 From: Manuel Streuhofer Date: Thu, 25 Jan 2018 10:35:53 +0100 Subject: [PATCH] templater.sh: use perl if available (#98) --- src/templater.sh | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/templater.sh b/src/templater.sh index eab35a1..7882387 100755 --- a/src/templater.sh +++ b/src/templater.sh @@ -39,12 +39,17 @@ function templater() { exit 1 fi - cp -f "${templateSrc}" "${templateDst}" - for var in $(env |awk -F= '{print $1}' |grep -E '^(_[A-Z0-9_]+|[A-Z0-9][A-Z0-9_]*)$'); do - sed -i.bak -e "s#\${${var}}#${!var//#/\\#/}#g" "${templateDst}" - # this .bak dance is done for BSD/GNU portability: http://stackoverflow.com/a/22084103/151666 - rm -f "${templateDst}.bak" - done + if [[ "$(command -v perl)" ]]; then + perl -p -e 's/\$\{(\w+)\}/(exists $ENV{$1} ? $ENV{$1} : "\${$1}")/eg' < "${templateSrc}" > "${templateDst}" + else + cp -f "${templateSrc}" "${templateDst}" + + for var in $(env |awk -F= '{print $1}' |grep -E '^(_[A-Z0-9_]+|[A-Z0-9][A-Z0-9_]*)$'); do + sed -i.bak -e "s#\${${var}}#${!var//#/\\#/}#g" "${templateDst}" + # this .bak dance is done for BSD/GNU portability: http://stackoverflow.com/a/22084103/151666 + rm -f "${templateDst}.bak" + done + fi # cat "${templateDst}"