feat(common): builder_-managed failure-trap

This commit is contained in:
Joshua A. Horton 2022-09-20 09:23:38 +07:00
parent 256b21f691
commit 2bea392baa
4 changed files with 21 additions and 56 deletions

View file

@ -15,15 +15,6 @@ THIS_SCRIPT="$(greadlink -f "${BASH_SOURCE[0]}" 2>/dev/null || readlink -f "${BA
# This script runs from its own folder
cd "$THIS_SCRIPT_PATH"
action=
function action_failure() {
if [ -n "$action" ]; then
builder_report failure $action
fi
}
trap action_failure err
################################ Main script ################################
# Ensures color var use in `builder_describe`'s argument respects the specified
@ -52,7 +43,6 @@ fi
# END - Script parameter configuration
if builder_has_action configure; then
action=configure
verify_npm_setup
"$KEYMAN_ROOT/common/web/keyman-version/build.sh"
@ -61,22 +51,16 @@ if builder_has_action configure; then
fi
if builder_has_action clean; then
action=clean
npm run clean
builder_report success clean
fi
if builder_has_action build; then
action=build
npm run tsc -- --build "$THIS_SCRIPT_PATH/src/tsconfig.json"
builder_report success build
fi
if builder_has_action test; then
action=test
# Build test dependency
pushd "$KEYMAN_ROOT/common/web/recorder"
./build.sh

View file

@ -14,16 +14,6 @@ THIS_SCRIPT="$(greadlink -f "${BASH_SOURCE[0]}" 2>/dev/null || readlink -f "${BA
. "$KEYMAN_ROOT/resources/shellHelperFunctions.sh"
action=
target=
function action_failure() {
if [ -n "$action" ]; then
builder_report failure $action $target
fi
}
trap action_failure err
################################ Main script ################################
@ -57,9 +47,6 @@ if builder_has_action configure :proctor; then
fi
if [ $CONFIGURE==true ]; then
action=configure
target=:project
verify_npm_setup
"$KEYMAN_ROOT/common/web/keyman-version/build.sh"
@ -69,33 +56,21 @@ if [ $CONFIGURE==true ]; then
fi
if builder_has_action clean :module; then
action=clean
target=:module
npm run tsc -- -b --clean "src/tsconfig.json"
builder_report success clean :module
fi
if builder_has_action clean :proctor; then
action=clean
target=:module
npm run tsc -- -b --clean "$THIS_SCRIPT_PATH/src/nodeProctor.tsconfig.json"
builder_report success clean :proctor
fi
if builder_has_action build :module; then
action=build
target=:module
npm run tsc -- --build "$THIS_SCRIPT_PATH/src/tsconfig.json"
builder_report success build :module
fi
if builder_has_action build :proctor; then
action=build
target=:proctor
npm run tsc -- --build "$THIS_SCRIPT_PATH/src/nodeProctor.tsconfig.json"
builder_report success build :proctor
fi

View file

@ -11,15 +11,6 @@ THIS_SCRIPT="$(greadlink -f "${BASH_SOURCE[0]}" 2>/dev/null || readlink -f "${BA
. "$KEYMAN_ROOT/resources/shellHelperFunctions.sh"
action=
function action_failure() {
if [ -n "$action" ]; then
builder_report failure $action
fi
}
trap action_failure err
################################ Main script ################################
builder_describe \
@ -29,24 +20,19 @@ builder_describe \
builder_parse "$@"
if builder_has_action configure; then
action=configure
verify_npm_setup
"$THIS_SCRIPT_PATH/build.sh"
"$KEYMAN_ROOT/common/web/keyman-version/build.sh"
builder_report success configure
fi
if builder_has_action clean; then
action=clean
npm run clean
builder_report success clean
fi
if builder_has_action build; then
action=build
npm run tsc -- --build "$THIS_SCRIPT_PATH/tsconfig.json"
builder_report success build
fi

View file

@ -348,6 +348,22 @@ _builder_item_is_target() {
return 0
}
function _builder_failure_trap() {
local action target
# Iterate across currently-active actions and report their failures.
for action in "${_builder_current_actions[@]}"; do
if [[ $action =~ : ]]; then
IFS=: read -r action target <<< $action
target=:$target
else
target=:project
fi
builder_report failure $action $target
done
}
#
# Returns 0 if the user has asked to perform action on target on the command line
#
@ -687,6 +703,10 @@ builder_parse() {
echo "* $e"
done
fi
# Now that we've successfully parsed options adhering to the _builder spec, we may activate the
# action_failure trap. (We don't want it active on scripts not yet using said script.)
trap _builder_failure_trap err
}
_builder_pad() {