#!/usr/bin/env bash log_info() { echo "[INFO ] $*" } log_warn() { echo "[WARN ] $*" >&2 } log_error() { echo "[ERROR] $*" >&2 } log_success() { echo "[ OK ] $*" } # Klar abgesetzte Fortschrittsanzeige fuer die tty-Konsole des Boot-Mediums # (kein Desktop, kein Kiosk-Browser - die Terminal-Ausgabe selbst ist die # einzige UI, die eine Person vor dem Geraet sieht). Gilt fuer Dev- UND # Produktiv-Build gleichermassen, nicht nur zum Debuggen - siehe Plan # "Klare Fortschrittsanzeige auf der Konsole". Format/Stil bewusst an die # bestehenden Banner in 17_device_status.sh angelehnt (Titel + "="-Linie # gleicher Laenge, keine Sonderzeichen, die auf einer rohen VT-Konsole # fehlen koennten). declare -A TUXFLOTTE_STEP_LABELS=( [00_preflight.sh]="Vorbereitung" [05_network.sh]="Netzwerkverbindung wird hergestellt" [10_hardware.sh]="Hardware wird erkannt" [12_enrollment_auth.sh]="Aktivierungscode wird geprüft" [15_server_handshake.sh]="Verbindung zu anode wird hergestellt" [17_device_status.sh]="Gerätestatus wird abgerufen" [20_profile_selection.sh]="Bereitstellungsvorlage wird ausgewählt" [25_installation_confirm.sh]="Installationsbestätigung" [30_runtime_blueprint.sh]="Installationsplan wird aufgelöst" [40_backend.sh]="Golden Image wird geladen und installiert" [20_storage.sh]="Speicher-Zusatzprüfung" [99_finish.sh]="Abschluss" ) readonly -a TUXFLOTTE_STEP_ORDER=( 00_preflight.sh 05_network.sh 10_hardware.sh 12_enrollment_auth.sh 15_server_handshake.sh 17_device_status.sh 20_profile_selection.sh 25_installation_confirm.sh 30_runtime_blueprint.sh 40_backend.sh 20_storage.sh 99_finish.sh ) TUXFLOTTE_STEP_COUNT=0 log_step() { local module_name="$1" local label="${TUXFLOTTE_STEP_LABELS[$module_name]:-$module_name}" local total="${#TUXFLOTTE_STEP_ORDER[@]}" local bold="" reset="" TUXFLOTTE_STEP_COUNT=$((TUXFLOTTE_STEP_COUNT + 1)) # Klartext-Fallback ohne Terminal (z.B. wenn stdout in eine Log-Datei # umgeleitet wird) - kein tput-Aufruf, ncurses-bin ist bewusst nicht Teil # des schlanken Paketsatzes, rohe ANSI-Codes reichen und sind ueberall # ohne Zusatzpaket verfuegbar. if [[ -t 1 ]]; then bold=$'\033[1m' reset=$'\033[0m' fi local title title="[${TUXFLOTTE_STEP_COUNT}/${total}] ${label}" printf '\n%s%s%s\n' "${bold}" "${title}" "${reset}" printf '%s\n\n' "$(printf '=%.0s' $(seq 1 ${#title}))" }