V8.00.000.2025.06.17
All checks were successful
🛡️ Shell Script Linting / 🛡️ Shell Script Linting (push) Successful in 1m0s
All checks were successful
🛡️ Shell Script Linting / 🛡️ Shell Script Linting (push) Successful in 1m0s
Signed-off-by: Marc S. Weidner <msw@coresecret.dev>
This commit is contained in:
153
lib/cdi_0200_dialog/0200_dialog_helper.sh
Normal file
153
lib/cdi_0200_dialog/0200_dialog_helper.sh
Normal file
@@ -0,0 +1,153 @@
|
||||
#!/bin/bash
|
||||
# SPDX-Version: 3.0
|
||||
# SPDX-CreationInfo: 2025-06-17; WEIDNER, Marc S.; <msw@coresecret.dev>
|
||||
# SPDX-ExternalRef: GIT https://git.coresecret.dev/msw/CISS.debian.installer.git
|
||||
# SPDX-FileContributor: WEIDNER, Marc S.; Centurion Intelligence Consulting Agency
|
||||
# SPDX-FileCopyrightText: 2024-2025; WEIDNER, Marc S.; <msw@coresecret.dev>
|
||||
# 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.installer
|
||||
# SPDX-Security-Contact: security@coresecret.eu
|
||||
|
||||
guard_sourcing
|
||||
|
||||
#######################################
|
||||
# Terminal cleaner for Dialog Wrappers.
|
||||
# Arguments:
|
||||
# None
|
||||
#######################################
|
||||
clean_screen() {
|
||||
tput cnorm > /dev/tty # Cursor visible
|
||||
tput sgr0 > /dev/tty # Attributes off
|
||||
stty sane < /dev/tty # Sane modes
|
||||
tput rmcup > /dev/tty # Back to the main buffer
|
||||
clear > /dev/tty # Clear residual
|
||||
#lines=$(tput lines)
|
||||
#tput cup $((lines-1)) 0 > /dev/tty
|
||||
#printf "\n" > /dev/tty
|
||||
}
|
||||
|
||||
#######################################
|
||||
# Wrapper for Dialog Gauge Bar.
|
||||
# Globals:
|
||||
# PID_DIALOG_GAUGE
|
||||
# PIPE_DIALOG_GAUGE
|
||||
# VAR_IN_DIALOG_WR
|
||||
# Arguments:
|
||||
# None
|
||||
#######################################
|
||||
dialog_gauge() {
|
||||
clear
|
||||
declare -gx VAR_IN_DIALOG_WR="gauge"
|
||||
declare -gx PIPE_DIALOG_GAUGE="/tmp/dialog_gauge_$$.fifo"
|
||||
if [[ -e "${PIPE_DIALOG_GAUGE}" && ! -p "${PIPE_DIALOG_GAUGE}" ]]; then
|
||||
rm -f "${PIPE_DIALOG_GAUGE}"
|
||||
fi
|
||||
[[ -p "${PIPE_DIALOG_GAUGE}" ]] || mkfifo "${PIPE_DIALOG_GAUGE}"
|
||||
|
||||
setsid dialog --no-collapse \
|
||||
--ascii-lines \
|
||||
--keep-tite \
|
||||
--title "CISS.debian.installer" \
|
||||
--gauge "Starting installation..." \
|
||||
10 70 0 \
|
||||
< "${PIPE_DIALOG_GAUGE}" &
|
||||
declare -gx PID_DIALOG_GAUGE="$!"
|
||||
exec {FD_GAUGE}> "${PIPE_DIALOG_GAUGE}"
|
||||
}
|
||||
|
||||
#######################################
|
||||
# Wrapper for Dialog Program Box.
|
||||
# Globals:
|
||||
# COLS_USE
|
||||
# PID_DIALOG_BOX
|
||||
# PIPE_DIALOG_BOX
|
||||
# ROWS_USE
|
||||
# VAR_IN_DIALOG_WR
|
||||
# Arguments:
|
||||
# None
|
||||
#######################################
|
||||
dialog_box() {
|
||||
### Save original stdout
|
||||
exec {FD_SAVE_OUT}>&1
|
||||
clear
|
||||
declare -gx VAR_IN_DIALOG_WR="box"
|
||||
declare -gx PIPE_DIALOG_BOX="/tmp/dialog_box_$$.fifo"
|
||||
if [[ -e "${PIPE_DIALOG_BOX}" && ! -p "${PIPE_DIALOG_BOX}" ]]; then
|
||||
rm -f "${PIPE_DIALOG_BOX}"
|
||||
fi
|
||||
[[ -p "${PIPE_DIALOG_BOX}" ]] || mkfifo "${PIPE_DIALOG_BOX}"
|
||||
|
||||
dialog --create-rc ~/.dialogrc
|
||||
|
||||
sed -i 's/screen_color = (CYAN,BLUE,ON)/screen_color = (WHITE,RED,ON)/' ~/.dialogrc
|
||||
sed -i 's/title_color = (BLUE,WHITE,ON)/title_color = (BLACK,WHITE,ON,ON)/' ~/.dialogrc
|
||||
sed -i 's/use_scrollbar = OFF/use_scrollbar = ON/' ~/.dialogrc
|
||||
sed -i 's/dialog_color = (BLACK,WHITE,OFF)/dialog_color = (WHITE,BLACK,OFF)/' ~/.dialogrc
|
||||
sed -i 's/border2_color = dialog_color/border2_color = (BLACK,WHITE,OFF)/' ~/.dialogrc
|
||||
sed -i 's/inputbox_border_color = dialog_color/inputbox_border_color = (BLACK,WHITE,OFF)/' ~/.dialogrc
|
||||
sed -i 's/inputbox_border2_color = dialog_color/inputbox_border2_color = (BLACK,WHITE,OFF)/' ~/.dialogrc
|
||||
sed -i 's/menubox_border_color = border_color/menubox_border_color = (BLACK,WHITE,OFF)/' ~/.dialogrc
|
||||
sed -i 's/menubox_border2_color = dialog_color/menubox_border2_color = (BLACK,WHITE,OFF)/' ~/.dialogrc
|
||||
sed -i 's/searchbox_border2_color = dialog_color/searchbox_border2_color = (BLACK,WHITE,OFF)/' ~/.dialogrc
|
||||
|
||||
chmod 0440 ~/.dialogrc
|
||||
|
||||
setsid dialog --colors \
|
||||
--ascii-lines \
|
||||
--title "Installation Progress" \
|
||||
--backtitle "CISS.2025.debian.installer" \
|
||||
--programbox "${ROWS_USE}" "${COLS_USE}" \
|
||||
< "${PIPE_DIALOG_BOX}" &
|
||||
declare -gx PID_DIALOG_BOX="$!"
|
||||
### Redirect both stdout and stderr into FIFO
|
||||
exec 1> "${PIPE_DIALOG_BOX}" 2>&1
|
||||
}
|
||||
|
||||
#######################################
|
||||
# Dialog Program Box Cleaner.
|
||||
# Globals:
|
||||
# PID_DIALOG_BOX
|
||||
# PIPE_DIALOG_BOX
|
||||
# Arguments:
|
||||
# None
|
||||
#######################################
|
||||
dialog_box_cleaner() {
|
||||
[[ -n "${FD_SAVE_OUT-}" ]] && exec 1>&"${FD_SAVE_OUT}" 2>&"${FD_SAVE_OUT}"
|
||||
[[ -n "${FD_SAVE_OUT-}" ]] && exec {FD_SAVE_OUT}>&-
|
||||
[[ -n "${FD_SAVE_OUT-}" ]] && unset FD_SAVE_OUT
|
||||
kill -TERM -- -"${PID_DIALOG_BOX}" 2>/dev/null || true
|
||||
wait "${PID_DIALOG_BOX}" 2>/dev/null || true
|
||||
unset PID_DIALOG_BOX
|
||||
rm -f "${PIPE_DIALOG_BOX}"
|
||||
unset PIPE_DIALOG_BOX
|
||||
rm -f ~/.dialogrc
|
||||
declare -gx VAR_IN_DIALOG_WR="false"
|
||||
clean_screen
|
||||
sleep 1
|
||||
}
|
||||
|
||||
#######################################
|
||||
# Dialog Gauge Bar Cleaner.
|
||||
# Globals:
|
||||
# PID_DIALOG_GAUGE
|
||||
# PIPE_DIALOG_GAUGE
|
||||
# Arguments:
|
||||
# None
|
||||
#######################################
|
||||
dialog_gauge_cleaner() {
|
||||
if [[ -n "${FD_GAUGE-}" ]]; then
|
||||
exec {FD_GAUGE}>&-
|
||||
unset FD_GAUGE
|
||||
fi
|
||||
kill -TERM -- -"${PID_DIALOG_GAUGE}" 2>/dev/null || true
|
||||
wait "${PID_DIALOG_GAUGE}" 2>/dev/null || true
|
||||
unset PID_DIALOG_GAUGE
|
||||
rm -f "${PIPE_DIALOG_GAUGE}"
|
||||
unset PIPE_DIALOG_GAUGE
|
||||
declare -gx VAR_IN_DIALOG_WR="false"
|
||||
clean_screen
|
||||
sleep 1
|
||||
}
|
||||
# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=sh
|
||||
Reference in New Issue
Block a user