FIX: Stop sed escaping numbers 2 and 7 in Docker

An interesting edge case has come up whilst using BackStage.

When using the example frontend-with-nginx work to run a separate
frontend, whilst then providing an override for the
googleAnalyticsTrackingId in yaml config via
APP_CONFIG_app_googleAnalyticsTrackingId. I received an "Octal escape
sequences are not allowed in strict mode" error in the browser dev
console.

After looking into it it appears that the sed used escapes the numbers 2
and 7 if they are present in an APP_CONFIG_* ENV override value.
I happened to have both a 2 and a 7 in my GA ids, hence the edge case
part!

Of note this did not happen on my mac but it is present inside of the
nginx:mainline Docker container used in the example.

This fix simply removes the hex from the sed substitution regex and
replaces it with a single quote '

Signed-off-by: Ben Chidgey <ben@feedmypixel.com>
This commit is contained in:
Ben Chidgey
2021-09-23 16:05:39 +01:00
parent ab2e915c6c
commit 7e2c0bc96f
@@ -23,7 +23,7 @@ function inject_config() {
# escape ' and " twice, for both sed and json
local config_escaped_1
config_escaped_1="$(echo "$config" | jq -cM . | sed -e 's/[\\"\x27]/\\&/g')" # \x27 = '
config_escaped_1="$(echo "$config" | jq -cM . | sed -e 's/[\\"'\'']/\\&/g')"
# escape / and & for sed
local config_escaped_2
config_escaped_2="$(echo "$config_escaped_1" | sed -e 's/[\/&]/\\&/g')"