From 807daf12d0a0f36c6b8df4c48327efa0ac899484 Mon Sep 17 00:00:00 2001 From: "Yann E. MORIN\"" Date: Tue, 15 Mar 2011 23:18:37 +0100 Subject: [PATCH] scripts: allow logging of commands with variables In a lot of places, we need to call some commands with specific variable settings, a-la: var1=val1 var2=val2 /foo/bar/buz opt1 opt2 Unfortunately, we currently can not log the variable settings. Enhance CT_DoExecLog with a crude heuristic that works pretty well and that can also log setting variables. Reported-by: ANDY KENNEDY Signed-off-by: "Yann E. MORIN" --- scripts/functions | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/scripts/functions b/scripts/functions index 38495949..2bf57678 100644 --- a/scripts/functions +++ b/scripts/functions @@ -119,12 +119,26 @@ CT_DoLog() { } # Execute an action, and log its messages -# Usage: [VAR=val...] CT_DoExecLog +# It is possible to even log local variable assignments (a-la: var=val ./cmd opts) +# Usage: CT_DoExecLog [VAR=val...] [parameters...] CT_DoExecLog() { local level="$1" shift - CT_DoLog DEBUG "==> Executing: '${*}'" + ( + for i in "$@"; do + tmp_log+="'${i}' " + done + while true; do + case "${1}" in + *=*) eval export "'${1}'"; shift;; + *) break;; + esac + done + CT_DoLog DEBUG "==> Executing: ${tmp_log}" "${@}" 2>&1 |CT_DoLog "${level}" + ) + # Catch failure of the sub-shell + [ $? -eq 0 ] } # Tail message to be logged whatever happens