#!/bin/bash # SPDX-Version: 3.0 # SPDX-CreationInfo: 2025-05-05; WEIDNER, Marc S.; # SPDX-ExternalRef: GIT https://git.coresecret.dev/msw/CISS.debian.live.builder.git # SPDX-FileContributor: WEIDNER, Marc S.; Centurion Intelligence Consulting Agency # SPDX-FileCopyrightText: 2024–2025; WEIDNER, Marc S.; # SPDX-FileType: SOURCE # SPDX-License-Identifier: EUPL-1.2 OR LicenseRef-CCLA-1.0 # SPDX-LicenseComment: This file is part of the CISS.debian.installer.secure framework. # SPDX-PackageName: CISS.debian.live.builder # SPDX-Security-Contact: security@coresecret.eu ####################################### # Print Error Message for Trap on 'ERR' in ${ERROR_LOG} # Globals: # ARGUMENTS_COUNT # ARG_STR_ORG_INPUT # VAR_ARG_SANITIZED # LOG_DEBUG # ERRCMMD # ERRCODE # ERRFUNC # ERRLINE # ERRSCRT # LOG_ERROR # LOG_VAR # SECONDS # VAR_EARLY_DEBUG # VAR_SYSTEM # VAR_VERSION # Arguments: # None ####################################### print_file_err() { { printf "❌ CISS.debian.live.builder Script failed. \n" printf "❌ Version : %s \n" "${VAR_VERSION}" printf "❌ Environment : %s \n" "${VAR_SYSTEM}" printf "❌ Error : %s \n" "${ERRCODE}" printf "❌ Line : %s \n" "${ERRLINE}" printf "❌ Script : %s \n" "${ERRSCRT}" printf "❌ Function : %s \n" "${ERRFUNC}" printf "❌ Command : %s \n" "${ERRCMMD}" printf "❌ Script Runtime : %s \n" "${SECONDS}" printf "❌ Arguments Counter : %s \n" "${ARGUMENTS_COUNT}" printf "❌ Arguments Original : %s \n" "${ARG_STR_ORG_INPUT}" printf "❌ Arguments Sanitized : %s \n" "${VAR_ARG_SANITIZED}" if "${VAR_EARLY_DEBUG}"; then printf "❌ Vars Dump saved at : %s \n" "${LOG_VAR}" printf "❌ Debug Log saved at : %s \n" "${LOG_DEBUG}" printf "❌ cat %s \n" "${LOG_DEBUG}" fi printf "\n" } >> "${LOG_ERROR}" } ####################################### # Print Error Message for Trap on 'ERR' on Terminal # Globals: # ARGUMENTS_COUNT # ARG_STR_ORG_INPUT # VAR_ARG_SANITIZED # LOG_DEBUG # ERRCMMD # ERRCODE # ERRFUNC # ERRLINE # ERRSCRT # LOG_ERROR # LOG_VAR # SECONDS # VAR_EARLY_DEBUG # VAR_SYSTEM # VAR_VERSION # Arguments: # None ####################################### print_scr_err() { printf "\e[91m❌ CISS.debian.live.builder Script failed. \e[0m\n" >&2 printf "\e[91m❌ Version : %s \e[0m\n" "${VAR_VERSION}" >&2 printf "\e[91m❌ Environment : %s \e[0m\n" "${VAR_SYSTEM}" >&2 printf "\e[91m❌ Error : %s \e[0m\n" "${ERRCODE}" >&2 printf "\e[91m❌ Line : %s \e[0m\n" "${ERRLINE}" >&2 printf "\e[91m❌ Script : %s \e[0m\n" "${ERRSCRT}" >&2 printf "\e[91m❌ Function : %s \e[0m\n" "${ERRFUNC}" >&2 printf "\e[91m❌ Command : %s \e[0m\n" "${ERRCMMD}" >&2 printf "\e[91m❌ Script Runtime : %s \e[0m\n" "${SECONDS}" >&2 printf "\e[91m❌ Arguments Counter : %s \e[0m\n" "${ARGUMENTS_COUNT}" >&2 printf "\e[91m❌ Arguments Original : %s \e[0m\n" "${ARG_STR_ORG_INPUT}" >&2 printf "\e[91m❌ Arguments Sanitized : %s \e[0m\n" "${VAR_ARG_SANITIZED}" >&2 printf "\e[91m❌ Error Log saved at : %s \e[0m\n" "${LOG_ERROR}" >&2 printf "\e[91m❌ cat %s \e[0m\n" "${LOG_ERROR}" >&2 if "${VAR_EARLY_DEBUG}"; then printf "\e[91m❌ Vars Dump saved at : %s \e[0m\n" "${LOG_VAR}" >&2 printf "\e[91m❌ Debug Log saved at : %s \e[0m\n" "${LOG_DEBUG}" >&2 printf "\e[91m❌ cat %s \e[0m\n" "${LOG_DEBUG}" >&2 fi printf "\n" } ####################################### # Trap function to be called on 'ERR'. # Globals: # ERRCMMD # ERRCODE # ERRFUNC # ERRLINE # ERRSCRT # VAR_EARLY_DEBUG # Arguments: # $1: $? # $2: ${BASH_SOURCE[0]} # $3: ${LINENO} # $4: ${FUNCNAME[0]:-main} # $5: ${BASH_COMMAND} ####################################### trap_on_err() { declare -g ERRCODE="$1" declare -g ERRSCRT="$2" declare -g ERRLINE="$3" declare -g ERRFUNC="$4" declare -g ERRCMMD="$5" trap - ERR if "${VAR_EARLY_DEBUG}"; then dump_user_vars; fi clean_up "${ERRCODE}" if ! $VAR_HANDLER_AUTOBUILD; then clean_screen; fi print_file_err print_scr_err } ####################################### # Gather all user-defined variables (name and value) # Globals: # LOG_VAR # VAR_DUMP_VARS_INITIAL # VAR_VERSION # Arguments: # None ####################################### dump_user_vars() { ### Capture the final snapshot of all variables (excluding '^(BASH|_).*') # shellcheck disable=SC2155 declare dump_vars_final=$(mktemp) set +x { declare var while IFS= read -r var; do declare -p "${var}" 2>/dev/null done < <(compgen -v | grep -Ev '^(BASH|_).*') } | sort >| "${dump_vars_final}" set -x { printf "✅ CISS.debian.live.builder Config Variable Dump. \n" printf "✅ Version : %s \n" "${VAR_VERSION}" printf "\n" printf "===== Initial VAR Environment ===== \n" } >> "${LOG_VAR}" comm -23 "${VAR_DUMP_VARS_INITIAL}" "${dump_vars_final}" >> "${LOG_VAR}" || true { printf "\n" printf "===== Final VAR Environment ===== \n" } >> "${LOG_VAR}" comm -13 "${VAR_DUMP_VARS_INITIAL}" "${dump_vars_final}" >> "${LOG_VAR}" || true rm "${VAR_DUMP_VARS_INITIAL}" "${dump_vars_final}" } # vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=sh