From 357dded96131217787a6cfda17d1f5d74dc0cf04 Mon Sep 17 00:00:00 2001
From: tavo-wasd <gustavo@gustavocalvo.xyz>
Date: Fri, 17 May 2024 17:26:44 -0600
Subject: [PATCH] one menu function

---
 01-utils.sh | 53 +++++++++++++++++++++++++++++++++++++++++++----------
 1 file changed, 43 insertions(+), 10 deletions(-)

diff --git a/01-utils.sh b/01-utils.sh
index 3492858..30f6f6a 100644
--- a/01-utils.sh
+++ b/01-utils.sh
@@ -49,7 +49,7 @@ set_version() {
 
     case "$ID" in
         centos) [ -n "$VERSION_ID" ] && [ "$VERSION_ID" -eq 9 ] &&
-		          ID="fedora" ;;
+                          ID="fedora" ;;
         *suse*|sles|sled) ID="suse" ;;
         debian|ubuntu)    ID="debian" ;;
         fedora|rhel)      ID="fedora" ;;
@@ -72,13 +72,6 @@ set_version() {
     esac
 }
 
-term_prompt() {
-    MODE="$1" PROMPT="$2"
-    [ "$MODE" = "info" ]  && printf '\n\033[1m\033[34m=== %s ===\033[0m\n%s ENTER' "$TITLE" "$PROMPT"
-    [ "$MODE" = "entry" ] && printf '\n\033[1m\033[34m=== %s ===\033[0m\n%s\n -> ' "$TITLE" "$PROMPT"
-    [ "$MODE" = "error" ] && printf '\n\033[1m\033[31m=== %s ===\033[0m\n%s\n'     "$TITLE" "$PROMPT"
-}
-
 firmador_libre() {
     FIRMADOR="https://firmador.libre.cr/firmador.jar"
     DIR="$HOME/.local/share/firmador"
@@ -91,7 +84,47 @@ firmador_libre() {
 
 set_menu() {
 if [ -z "$MENU" ] ; then
-	command -v zenity > /dev/null && MENU="zenity" && return 0
-	command -v kdialog > /dev/null && MENU="kdialog" && return 0
+    command -v zenity > /dev/null && MENU="zenity" && return 0
+    command -v kdialog > /dev/null && MENU="kdialog" && return 0
 fi
 }
+
+menu() {
+MODE="$1" PROMPT="$2"
+
+if [ "$MENU" = "zenity" ] ; then
+    echo_debug "MENU: $MENU MODE: $MODE PROMPT: $PROMPT" > /dev/stderr # DEBUG
+
+    [ "$MODE" = "info" ] &&
+        zenity --title "$TITLE" --text "$PROMPT" --info
+
+    [ "$MODE" = "error" ] &&
+        zenity --title "$TITLE" --text "$PROMPT" --error > /dev/stderr
+
+    [ "$MODE" = "entry" ] &&
+        zenity --title "$TITLE" --text "$PROMPT" --entry
+
+    [ "$MODE" = "pass" ] &&
+        zenity --title "$TITLE" --password
+
+elif [ "$MENU" = "term" ] ; then
+    [ "$MODE" = "info" ]  &&
+        printf '\n\033[1m\033[34m=== %s ===\033[0m\n%s ENTER' "$TITLE" "$PROMPT" >/dev/stdin &&
+        read -r nil
+
+    [ "$MODE" = "error" ] &&
+        printf '\n\033[1m\033[31m=== %s ===\033[0m\n%s\n'     "$TITLE" "$PROMPT" >/dev/stderr
+
+    [ "$MODE" = "entry" ] &&
+        printf '\n\033[1m\033[34m=== %s ===\033[0m\n%s\n -> ' "$TITLE" "$PROMPT" >/dev/stdin &&
+        IFS= read -r entry &&
+        printf '%s' "$entry"
+
+    [ "$MODE" = "pass" ] &&
+        printf '\n\033[1m\033[34m=== %s ===\033[0m\n%s\n -> ' "$TITLE" "$PROMPT" >/dev/stdin &&
+        IFS= read -r passwd &&
+        printf '%s' "$passwd"
+
+fi
+
+}