From bf4da4d8a2cc093e6ac1a0f09843e60cff65a632 Mon Sep 17 00:00:00 2001 From: Valentin Lab Date: Wed, 17 Jan 2024 15:35:36 +0100 Subject: [PATCH] fix: [compose] catch possible error and bail out --- bin/compose | 47 +++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 43 insertions(+), 4 deletions(-) diff --git a/bin/compose b/bin/compose index 64b63e0..a0408a3 100755 --- a/bin/compose +++ b/bin/compose @@ -15,6 +15,40 @@ ## From kal-shlib ## +read-0-err() { + local ret="$1" eof="" idx=0 last= + read -r -- "${ret?}" <<<"0" + shift + while [ "$1" ]; do + last=$idx + read -r -d '' -- "$1" || { + ## Put this last value in ${!ret} + eof="$1" + read -r -- "$ret" <<<"${!eof}" + break + } + ((idx++)) + shift + done + [ -z "$eof" ] || { + if [ "$last" != 0 ]; then + echo "Error: read-0-err couldn't fill all value" >&2 + read -r -- "$ret" <<<"127" + else + if [ -z "${!ret}" ]; then + echo "Error: last value is not a number, did you finish with an errorlevel ?" >&2 + read -r -- "$ret" <<<"126" + fi + fi + false + } +} + +p-err() { + "$@" + echo "$?" +} + _sed_compat_load() { if get_path sed >/dev/null; then @@ -994,10 +1028,15 @@ run() { [ -n "$DEBUG" ] && show_env >&2 if [ -n "$ARG_COMPOSE_FILE" ]; then - array_read-0 cmd_args < \ - <(replace_compose_file_opt "$COMPOSE_LAUNCHER_HASH" \ - "$COMPOSE_LAUNCHER_BIN_OVERRIDE" \ - "$@") + while read-0-err E cmd_arg; do + cmd_args+=("$cmd_arg") + done < <(p-err replace_compose_file_opt "$COMPOSE_LAUNCHER_HASH" \ + "$COMPOSE_LAUNCHER_BIN_OVERRIDE" \ + "$@") + if [ "$E" != "0" ]; then + err "Unexpecte failure while trying to replace compose file option." + return 1 + fi set -- "${cmd_args[@]}" fi