From 75de50f5d8f6dc6d544391f927958e772df8803c Mon Sep 17 00:00:00 2001 From: Jephte Clain Date: Wed, 27 Mar 2024 04:37:42 +0400 Subject: [PATCH] modifs.mineures sans commentaires --- bash/src/base.output.sh | 31 ++++++++++++++++++++----------- bash/tests/test-output.sh | 21 +++++++++++++++------ 2 files changed, 35 insertions(+), 17 deletions(-) diff --git a/bash/src/base.output.sh b/bash/src/base.output.sh index 554986e..d2e8c07 100644 --- a/bash/src/base.output.sh +++ b/bash/src/base.output.sh @@ -506,18 +506,31 @@ function estepn_() { show_info || return; eval "$NULIB__DISABLE_SET_X"; __estepn function estepi_() { show_info || return; eval "$NULIB__DISABLE_SET_X"; __estepi_ "$*" 1>&2; eval "$NULIB__ENABLE_SET_X"; } function action() { - show_info || return +# commencer l'action $1 +# - si $2..$* est spécifié, c'est une commande qui est lancée dans le contexte +# de l'action, ensuite l'action est terminée en succès ou en échec suivant le +# code de retour. ne pas afficher la sortie de la commande comme avec quietc() +# - sinon il faut terminer le titre explicitement avec eend eval "$NULIB__DISABLE_SET_X" local action="$1"; shift local r=0 if [ $# -gt 0 ]; then - "$@"; r=$? - if [ $r -eq 0 ]; then - [ -n "$action" ] || action="succès" - __asuccess "$action" 1>&2 + [ -z "$NULIB__TMPLOG" ] && ac_set_tmpfile NULIB__TMPLOG + "$@" >&"$NULIB__TMPLOG"; r=$? + [ -n "$NULIB_QUIETLOG" ] && cat "$NULIB__TMPLOG" >>"$NULIB_QUIETLOG" + if [ $r -ne 0 -o -n "$NULIB_DEBUG" ]; then + NULIB__ESTACK="$NULIB__ESTACK:a" + __action "$action:" 1>&2 + cat "$NULIB__TMPLOG" + aresult $r else - [ -n "$action" ] || action="échec" - __afailure "$action" 1>&2 + if [ $r -eq 0 ]; then + [ -n "$action" ] || action="succès" + __asuccess "$action" 1>&2 + else + [ -n "$action" ] || action="échec" + __afailure "$action" 1>&2 + fi fi else NULIB__ESTACK="$NULIB__ESTACK:a" @@ -528,7 +541,6 @@ function action() { function asuccess() { # terminer l'action en cours avec le message de succès $* - show_info || return [ "${NULIB__ESTACK%:a}" != "$NULIB__ESTACK" ] || return eval "$NULIB__DISABLE_SET_X" [ -n "$*" ] || set -- "succès" @@ -538,7 +550,6 @@ function asuccess() { } function afailure() { # terminer l'action en cours avec le message d'échec $* - show_info || return [ "${NULIB__ESTACK%:a}" != "$NULIB__ESTACK" ] || return eval "$NULIB__DISABLE_SET_X" [ -n "$*" ] || set -- "échec" @@ -549,7 +560,6 @@ function afailure() { function aresult() { # terminer l'action en cours avec un message de succès ou d'échec $2..* en # fonction du code de retour $1 (0=succès, sinon échec) - show_info || return [ "${NULIB__ESTACK%:a}" != "$NULIB__ESTACK" ] || return eval "$NULIB__DISABLE_SET_X" local r="${1:-0}"; shift @@ -565,7 +575,6 @@ function aresult() { } function adone() { # terminer l'action en cours avec le message neutre $* - show_info || return [ "${NULIB__ESTACK%:a}" != "$NULIB__ESTACK" ] || return eval "$NULIB__DISABLE_SET_X" [ -n "$*" ] && NULIB__INDENT=" " __adone "$*" 1>&2 diff --git a/bash/tests/test-output.sh b/bash/tests/test-output.sh index 2f68eb2..56a5812 100755 --- a/bash/tests/test-output.sh +++ b/bash/tests/test-output.sh @@ -7,6 +7,7 @@ Multiline= Banner= args=( "afficher divers messages avec les fonctions e*" + -D,--debug '$set_debug' -d,--date NULIB_ELOG_DATE=1 -m,--myname NULIB_ELOG_MYNAME=1 -n,--nc,--no-color '$__set_no_colors 1' @@ -142,19 +143,27 @@ else asuccess asuccess + function vtrue() { + echo "commande qui se termine avec succès" + } + function vfalse() { + echo "commande qui se termine en échec" + return 1 + } + edesc "action avec commande" - action "commande true" true - action "commande false" false + action "commande true" vtrue + action "commande false" vfalse edesc "action avec commande et aresult sans message" action "commande true" - true; aresult $? + vtrue; aresult $? action "commande false" - false; aresult $? + vfalse; aresult $? edesc "action avec commande et aresult" action "commande true" - true; aresult $? "résultat de la commande" + vtrue; aresult $? "résultat de la commande" action "commande false" - false; aresult $? "résultat de la commande" + vfalse; aresult $? "résultat de la commande" fi