diff --git a/templates/basic/build.sh b/templates/basic/build.sh index a4201bd..f753817 100644 --- a/templates/basic/build.sh +++ b/templates/basic/build.sh @@ -38,8 +38,29 @@ toml_get() { } toml_array() { - (grep "^$1 " "$CONFIG" 2>/dev/null || true) | head -1 \ - | sed 's/.*\[//; s/\].*//; s/"//g; s/,/ /g' | tr -s ' ' + # Handles both single-line: key = ["a", "b"] + # and multiline: key = [ + # "a", + # "b", + # ] + awk -v key="$1" ' + $0 ~ ("^" key " *= *\\[") { + collecting = 1 + buf = $0 + if (index($0, "]") > 0) { collecting = 0 } + } + collecting && NR > 1 { buf = buf " " $0 } + collecting && index($0, "]") > 0 && NR > 1 { collecting = 0 } + !collecting && buf != "" { + gsub(/.*\[/, "", buf) + gsub(/\].*/, "", buf) + gsub(/"/, "", buf) + gsub(/,/, " ", buf) + print buf + buf = "" + exit + } + ' "$CONFIG" | tr -s " " } toml_section_get() { diff --git a/templates/basic/upload.sh b/templates/basic/upload.sh index 758bdd3..6db063a 100644 --- a/templates/basic/upload.sh +++ b/templates/basic/upload.sh @@ -39,8 +39,29 @@ toml_get() { } toml_array() { - (grep "^$1 " "$CONFIG" 2>/dev/null || true) | head -1 \ - | sed 's/.*\[//; s/\].*//; s/"//g; s/,/ /g' | tr -s ' ' + # Handles both single-line: key = ["a", "b"] + # and multiline: key = [ + # "a", + # "b", + # ] + awk -v key="$1" ' + $0 ~ ("^" key " *= *\\[") { + collecting = 1 + buf = $0 + if (index($0, "]") > 0) { collecting = 0 } + } + collecting && NR > 1 { buf = buf " " $0 } + collecting && index($0, "]") > 0 && NR > 1 { collecting = 0 } + !collecting && buf != "" { + gsub(/.*\[/, "", buf) + gsub(/\].*/, "", buf) + gsub(/"/, "", buf) + gsub(/,/, " ", buf) + print buf + buf = "" + exit + } + ' "$CONFIG" | tr -s " " } toml_section_get() {