Compare commits

..

No commits in common. "a6ae380aa75f15ab4ef67753719bc09da35e74b0" and "bc1969dd20bfdb7862e1363bfefb6cc933e19472" have entirely different histories.

2 changed files with 40 additions and 56 deletions

View File

@ -13,6 +13,5 @@ CFG_REQUIREMENT_CONFIGS_AUTO_UPDATE=true # Auto Config Updates -
CFG_REQUIREMENT_CONFIGS_AUTO_DELETE=true # Auto Config Deletes - Remove config options no longer present in the template CFG_REQUIREMENT_CONFIGS_AUTO_DELETE=true # Auto Config Deletes - Remove config options no longer present in the template
CFG_REQUIREMENT_MISSING_IPS=false # IP Configuration Check - Check for and alert about missing IP configurations CFG_REQUIREMENT_MISSING_IPS=false # IP Configuration Check - Check for and alert about missing IP configurations
CFG_REQUIREMENT_CONTINUE_PROMPT=false # Continue Prompts - Show continue prompts during installation for user confirmation CFG_REQUIREMENT_CONTINUE_PROMPT=false # Continue Prompts - Show continue prompts during installation for user confirmation
CFG_REQUIREMENT_CONTINUE_ON_ERROR=true # Continue On Error - Log failures to error_report.log and continue instead of aborting (on by default to surface issues; turn off for strict abort once clean)
CFG_REQUIREMENT_SUGGEST_INSTALLS=false # Install Suggestions - Enable application suggestions and recommendations during installation CFG_REQUIREMENT_SUGGEST_INSTALLS=false # Install Suggestions - Enable application suggestions and recommendations during installation
CFG_REQUIREMENT_SUGGEST_METRICS=true # Metrics Suggestions - Offer Prometheus and Grafana during first install (requires Install Suggestions enabled) CFG_REQUIREMENT_SUGGEST_METRICS=true # Metrics Suggestions - Offer Prometheus and Grafana during first install (requires Install Suggestions enabled)

View File

@ -1,68 +1,53 @@
#!/bin/bash #!/bin/bash
# checkSuccess "message" — report on the exit status of the PRECEDING command.
#
# IMPORTANT for callers: $? must still be the command's exit when this is called.
# `local VAR=$(cmd); checkSuccess ...` is a BUG — the `local`/`declare` builtin
# resets $? to 0, masking the command's real failure. Use `local VAR; VAR=$(cmd)`
# (split declaration from assignment) so $? survives.
#
# On failure this ALWAYS records the failure to a greppable error report
# ($logs_dir/error_report.log) with the caller's script:line + exit code, so a
# failure can never hide behind a green check again. Then it either continues
# (CFG_REQUIREMENT_CONTINUE_ON_ERROR=true, the default — surface every issue in a
# single pass) or falls back to the strict abort/prompt behaviour when that's off.
function checkSuccess() function checkSuccess()
{ {
local rc=$? if [ $? -eq 0 ]; then
local msg="$1" isSuccessful "$1"
if [ "$rc" -eq 0 ]; then
isSuccessful "$msg"
if [ -f "$logs_dir/$docker_log_file" ]; then if [ -f "$logs_dir/$docker_log_file" ]; then
echo "✓ Success $msg" | runInstallWrite -a "$logs_dir/$docker_log_file" >/dev/null echo "✓ Success $1" | runInstallWrite -a "$logs_dir/$docker_log_file" >/dev/null
fi fi
return 0 else
fi isError "$1"
# ---- failure ---- # Non-interactive (task processor / cron / piped): bail instead of
isError "$msg" # blocking on read.
if [[ "$LIBREPORTAL_NONINTERACTIVE" == "1" ]] || [ ! -t 0 ]; then
if [ -f "$logs_dir/$docker_log_file" ]; then
isError " $1" | runInstallWrite -a "$logs_dir/$docker_log_file" >/dev/null
echo "===================================" | runInstallWrite -a "$logs_dir/$docker_log_file" >/dev/null
fi
isNotice "Non-interactive mode: aborting on error."
exit 1
fi
# Record EVERY failure to a dedicated, greppable report (manager-owned logs), while true; do
# tagged with the caller's script:line + exit code. Best-effort; never aborts. isQuestion "An error has occurred. Do you want to continue, exit or go to back to the Menu? (c/x/m) "
local _where="${BASH_SOURCE[1]##*/}:${BASH_LINENO[0]}" read -rp "" error_occurred
local _stamp; _stamp="$(date '+%F %T' 2>/dev/null || echo now)" if [[ -n "$error_occurred" ]]; then
printf '%s\t[exit %s]\t%s\t(%s)\n' "$_stamp" "$rc" "$msg" "$_where" \ break
| runInstallWrite -a "$logs_dir/error_report.log" 2>/dev/null || true fi
if [ -f "$logs_dir/$docker_log_file" ]; then isNotice "Please provide a valid input."
isError " $msg (exit $rc, $_where)" | runInstallWrite -a "$logs_dir/$docker_log_file" >/dev/null 2>&1 || true done
fi
# Continue-on-error (default true): log and carry on so a single failure if [[ "$error_occurred" == [cC] ]]; then
# doesn't abort the whole run and we surface EVERY issue in one pass. Turn isNotice "Continuing after error has occurred."
# CFG_REQUIREMENT_CONTINUE_ON_ERROR off for strict abort once things are clean. fi
if [[ "${CFG_REQUIREMENT_CONTINUE_ON_ERROR:-true}" == "true" ]]; then
isNotice "continue-on-error: logged to $logs_dir/error_report.log — continuing."
return 0
fi
# ---- strict mode (continue-on-error off) ---- if [[ "$error_occurred" == [xX] ]]; then
# Non-interactive (task processor / cron / piped): bail instead of blocking. # Log the error output to the log file
if [[ "$LIBREPORTAL_NONINTERACTIVE" == "1" ]] || [ ! -t 0 ]; then isError " $1" | runInstallWrite -a "$logs_dir/$docker_log_file"
isNotice "Non-interactive mode: aborting on error." echo "===================================" | runInstallWrite -a "$logs_dir/$docker_log_file"
exit 1 exit 1 # Exit the script with a non-zero status to stop the current action
fi fi
while true; do if [[ "$error_occurred" == [mM] ]]; then
isQuestion "An error has occurred. Do you want to continue, exit or go to back to the Menu? (c/x/m) " # Log the error output to the log file
read -rp "" error_occurred isError " $1" | runInstallWrite -a "$logs_dir/$docker_log_file"
[[ -n "$error_occurred" ]] && break echo "===================================" | runInstallWrite -a "$logs_dir/$docker_log_file"
isNotice "Please provide a valid input." if [[ "$initial_command2" == "terminal" ]]; then
done resetToMenu;
fi
[[ "$error_occurred" == [cC] ]] && isNotice "Continuing after error has occurred." fi
[[ "$error_occurred" == [xX] ]] && exit 1
if [[ "$error_occurred" == [mM] && "$initial_command2" == "terminal" ]]; then
resetToMenu
fi fi
} }