#!/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 # ARG_STR_SANITIZED # DEBUG_LOG # EARLY_DEBUG # ERROR_LOG # VAR_LOG # VERSION # errcmmd # errcode # errfunc # errline # errscrt # Arguments: # None ####################################### print_file_err() { { printf "❌ CISS.debian.live.builder Script failed. \n" printf "❌ Version : %s \n" "${VERSION}" printf "❌ Environment : %s \n" "${SYSTEM_VAR}" 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" "${ARG_STR_SANITIZED}" if "${EARLY_DEBUG}"; then printf "❌ Vars Dump saved at : %s \n" "${VAR_LOG}" printf "❌ Debug Log saved at : %s \n" "${DEBUG_LOG}" printf "❌ cat %s \n" "${DEBUG_LOG}" fi printf "\n" } >> "${ERROR_LOG}" } ####################################### # Print Error Message for Trap on 'ERR' on Terminal # Globals: # ARGUMENTS_COUNT # ARG_STR_ORG_INPUT # ARG_STR_SANITIZED # DEBUG_LOG # EARLY_DEBUG # ERROR_LOG # VAR_LOG # VERSION # errcmmd # errcode # errfunc # errline # errscrt # 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" "${VERSION}" >&2 printf "\e[91m❌ Environment : %s \e[0m\n" "${SYSTEM_VAR}" >&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" "${ARG_STR_SANITIZED}" >&2 printf "\e[91m❌ Error Log saved at : %s \e[0m\n" "${ERROR_LOG}" >&2 printf "\e[91m❌ cat %s \e[0m\n" "${ERROR_LOG}" >&2 if "${EARLY_DEBUG}"; then printf "\e[91m❌ Vars Dump saved at : %s \e[0m\n" "${VAR_LOG}" >&2 printf "\e[91m❌ Debug Log saved at : %s \e[0m\n" "${DEBUG_LOG}" >&2 printf "\e[91m❌ cat %s \e[0m\n" "${DEBUG_LOG}" >&2 fi printf "\n" } ####################################### # Trap function to be called on 'ERR'. # Globals: # 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 "${EARLY_DEBUG}"; then dump_user_vars; fi clean_up "${errcode}" clean_screen print_file_err print_scr_err } ####################################### # Gather all user-defined variables (name and value) # Globals: # VAR_LOG # VERSION # dump_vars_initial # var # 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" "${VERSION}" printf "\n" printf "===== Initial VAR Environment ===== \n" } >> "${VAR_LOG}" comm -23 "${dump_vars_initial}" "${dump_vars_final}" >> "${VAR_LOG}" || true { printf "\n" printf "===== Final VAR Environment ===== \n" } >> "${VAR_LOG}" comm -13 "${dump_vars_initial}" "${dump_vars_final}" >> "${VAR_LOG}" || true rm "${dump_vars_initial}" "${dump_vars_final}" } # vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=sh