From 0086e12574bc31b1a12f9eb94066b71204309390 Mon Sep 17 00:00:00 2001 From: Roman Alifanov <ximper@etersoft.ru> Date: Sun, 23 Jun 2024 18:20:52 +0300 Subject: [PATCH] removing the mention of epmgpi and leading to an adequate view --- ximper-yad-respondent-func.sh | 100 +++++++++++++--------------------- 1 file changed, 39 insertions(+), 61 deletions(-) mode change 100755 => 100644 ximper-yad-respondent-func.sh diff --git a/ximper-yad-respondent-func.sh b/ximper-yad-respondent-func.sh old mode 100755 new mode 100644 index cc157d7..a7c253c --- a/ximper-yad-respondent-func.sh +++ b/ximper-yad-respondent-func.sh @@ -1,89 +1,67 @@ #!/bin/bash if [ $(id -u) -eq 0 ]; then - echo "Нельзя запускать epmgpi от пользователя root." + echo "Нельзя запускать respondent от пользователя root." exit 1 fi -YAD_DEFAULT="/usr/bin/yad --window-icon=epmgpi --title=epmgpi --class=epmgpi" - -clean_up_tmp() { - rm -fr "$EPMGPI_TMP" -} - -EPMGPI_TMP=$(mktemp -d -t epmgpi.XXXXXXX) -# shellcheck disable=SC2064 -trap "clean_up_tmp $EPMGPI_TMP" EXIT - -EPMGPI_LOG_FILE="$EPMGPI_TMP/epmgpi.log" - -touch "$EPMGPI_LOG_FILE" - -epmgpi_logging() { - tee -a "$EPMGPI_LOG_FILE" -} - -ntf() { - notify-send --icon=epmgpi "$1" -} - - -# Уведомление об ошибке -ntf_error() { - notify-send --icon=error "$1" +respondent_logging() { + tee -a "$1" } -epmgpi_answer() { -while true; do - last_line=$(tail -n 1 "$EPMGPI_LOG_FILE") - if [[ $last_line == *"[Y/n]"* ]]; then - # Действия, которые нужно выполнить, если найдена строка с [Y/n] - yad --image="dialog-question" --text "$last_line" \ - --button="yad-yes:0" \ - --button="yad-no:1" - ANSWER=$? +respondent_answer() { + local RESPONDENT_LOG_FILE=$1 + local YAD_DEFAULT="/usr/bin/yad --window-icon=$2 --title=$3 --class=$2" + while true; do + local LAST_LINE + LAST_LINE=$(tail -n 1 "$RESPONDENT_LOG_FILE") + + if [[ ${LAST_LINE,,} == *"[y/n]"* || ${LAST_LINE,,} == *"[n/y]"* || ${LAST_LINE,,} == *"[д/н]"* || ${LAST_LINE,,} == *"[н/д]"* ]]; then + $YAD_DEFAULT --image="dialog-question" --text "$LAST_LINE" \ + --button="yad-yes:0" \ + --button="yad-no:1" + local ANSWER=$? + if [ $ANSWER -eq 0 ]; then echo "y" elif [ $ANSWER -eq 1 ]; then echo "n" fi - fi - if [[ $last_line == *"EXIT"* ]]; then - # Если в тексте найдено слово "EXIT", останавливаем цикл - break - fi + printf "\nrespondent replied\n" >> "$RESPONDENT_LOG_FILE" + fi + if [[ $LAST_LINE == *"RESPONDENT_EXIT"* ]]; then + break + fi sleep 1 done } -epmgpi_answer | ( - /usr/bin/pkexec /usr/bin/epm full-upgrade 2>&1 - exit_code=$? +ximper_respondent() { + local COMMAND="$1" + local RESPONDENT_LOG_FILE="${2}_respondent.log" + rm -fr "$RESPONDENT_LOG_FILE" + touch "$RESPONDENT_LOG_FILE" - case $exit_code in + respondent_answer "$RESPONDENT_LOG_FILE" "$3"| ( + script -q -a -f "/dev/null" -c "$COMMAND" --echo always + case $? in 0) - echo "Команда завершилась успешно" - ntf "Пакет установлен!" - echo "EXIT" > "$EPMGPI_LOG_FILE" - + echo "Команда завершилась успешно." ;; 100) - ntf_error "Пакет не установлен. Команда завершилась с ошибкой." - echo "EXIT" > "$EPMGPI_LOG_FILE" + echo "Команда завершилась с ошибкой." ;; - 126) - ntf_error "Пакет не установлен. Действие прервано пользователем." - echo "EXIT" > "$EPMGPI_LOG_FILE" + echo "Действие прервано пользователем." + ;; + 1) + echo "Команда завершилась с ошибкой." ;; *) - ntf_error "Пакет не установлен." - echo "EXIT" > "$EPMGPI_LOG_FILE" ;; - esac - ) | epmgpi_logging | sed -u 's/^/# /' | $YAD_DEFAULT \ - --title="Установка пакета" \ - --progress --width=800 --height=500 \ - --enable-log="Лог" --log-expanded --log-on-top --auto-kill --auto-close \ No newline at end of file + esac + echo "RESPONDENT_EXIT" + ) | respondent_logging "$RESPONDENT_LOG_FILE" +} \ No newline at end of file -- 2.24.1