From 7ead9b132dd6f55c3268e479aa01dcdb8280bdf9 Mon Sep 17 00:00:00 2001 From: Andrew Robbins Date: Fri, 26 Apr 2019 23:16:20 -0400 Subject: libs/project: Print project_action() footer, always Previously, the footer would not print if the project action failed due to 'set -e' still being in effect (the subshell would return with a non-zero exit code and exit immediately). The purpose of the subshell for the project action is to better separate the execution environment of the project from the library functions it calls. The test condition in the if-statement and its consequents were changed in order to be more concise and informative. --- libs/project | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) (limited to 'libs/project') diff --git a/libs/project b/libs/project index 52888e32..e5088265 100755 --- a/libs/project +++ b/libs/project @@ -147,21 +147,26 @@ project_action() { return 0 fi - printf '%s\n\n' "Project $project $action (with ${arguments:-no argument})" - ( set +e - "$action" "$@" - ) + printf '%s\n\n' "Project $project $action (with ${arguments:-no argument})" - if [[ $? -eq 0 ]]; then - printf '\n%s\n' "Project $project $action (with ${arguments:-no argument}) completed" - else - printf 1>&2 '\n%s\n' "Project $project $action (with ${arguments:-no argument}) failed" + ( + "$action" "$@" + ) + + local -i exit_status=$? + + if ((exit_status)); then + printf 1>&2 '\n%s\n' "Project $project $action (with ${arguments:-no argument}) failed" + else + printf '\n%s\n' "Project $project $action (with ${arguments:-no argument}) completed" + fi + + exit $exit_status + ) - return 1 - fi } project_action_check() { -- cgit v1.2.3-70-g09d2