From a77c910db2ad254a8d0eb2e68dead9575765256b Mon Sep 17 00:00:00 2001 From: Martin Wimpress Date: Tue, 23 Jul 2024 10:12:43 +0100 Subject: [PATCH] fix(yaml): make parse_yaml() shellcheck compliant --- stream-sprout | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/stream-sprout b/stream-sprout index ec1dc40..21b2230 100755 --- a/stream-sprout +++ b/stream-sprout @@ -12,18 +12,23 @@ function ctrl_c() { # https://stackoverflow.com/questions/5014632/how-can-i-parse-a-yaml-file-from-a-linux-shell-script function parse_yaml() { - local prefix=$2 - local s='[[:space:]]*' w='[a-zA-Z0-9_]*' fs=$(echo @|tr @ '\034') - sed -ne "s|^\($s\):|\1|" \ - -e "s|^\($s\)\($w\)$s:$s[\"']\(.*\)[\"']$s\$|\1$fs\2$fs\3|p" \ - -e "s|^\($s\)\($w\)$s:$s\(.*\)$s\$|\1$fs\2$fs\3|p" $1 | - awk -F$fs '{ + local prefix="${2}" + local s="" + local w="" + local fs="" + s='[[:space:]]*' + w='[a-zA-Z0-9_]*' + fs=$(echo @|tr @ '\034') + sed -ne "s|^\(${s}\):|\1|" \ + -e "s|^\(${s}\)\(${w}\)${s}:${s}[\"']\(.*\)[\"']$s\$|\1${fs}\2${fs}\3|p" \ + -e "s|^\(${s}\)\(${w}\)${s}:${s}\(.*\)${s}\$|\1${fs}\2${fs}\3|p" "${1}" | + awk -F"${fs}" '{ indent = length($1)/2; vname[indent] = $2; for (i in vname) {if (i > indent) {delete vname[i]}} if (length($3) > 0) { vn=""; for (i=0; i