From 53a124d65ef8411161e47efb16aa69688ef7d979 Mon Sep 17 00:00:00 2001
From: "Hahn Axel (hahn)" <axel.hahn@unibe.ch>
Date: Wed, 30 Oct 2024 15:38:04 +0100
Subject: [PATCH] added: show menu hints why some menu items are visible

---
 docker/init.sh                                | 31 +++++++++++++++++--
 docker/init.sh.cfg                            |  6 ++++
 .../10_init.sh.cfg.md"                        |  1 +
 3 files changed, 35 insertions(+), 3 deletions(-)

diff --git a/docker/init.sh b/docker/init.sh
index 96effd1..14f1f91 100755
--- a/docker/init.sh
+++ b/docker/init.sh
@@ -27,6 +27,7 @@
 # 2024-10-16  v1.20 <axel.hahn@unibe.ch>      add db import and export
 # 2024-10-25  v1.21 <axel.hahn@unibe.ch>      create missing subdir dbdumps
 # 2024-10-30  v1.22 <axel.hahn@unibe.ch>      added: Open Mysql client in container
+# 2024-10-30  v1.23 <axel.hahn@unibe.ch>      added: show menu hints why some menu items are visible
 # ======================================================================
 
 cd "$( dirname "$0" )" || exit 1
@@ -40,7 +41,7 @@ _self=$( basename "$0" )
 # shellcheck source=/dev/null
 . "${_self}.cfg" || exit 1
 
-_version="1.22"
+_version="1.23"
 
 # git@git-repo.iml.unibe.ch:iml-open-source/docker-php-starterkit.git
 selfgitrepo="docker-php-starterkit.git"
@@ -67,6 +68,7 @@ DC_CONFIG_CHANGED=0
 DC_WEB_URL=""
 
 DC_DUMP_DIR=dbdumps
+DC_SHOW_MENUHINTS=0
 
 isDockerRootless=0
 ps -ef | grep  dockerd-rootless | grep -q $USER && isDockerRootless=1
@@ -142,6 +144,15 @@ function  _key(){
     echo -en "\e[4;7m ${1} \e[0m"
 }
 
+# helper for menu: show hint text
+# param  int      FLag _bAll (i true the txt will be hidden)
+# param  string   message to show
+function menuhint(){
+    local _bAll="$1"
+    shift 1
+    test $DC_SHOW_MENUHINTS -ne 0 && test "$_bAll" -eq "0" && ( echo -e "$fgBlue  $*$fgReset" )
+}
+
 # show menu in interactive mode and list keys in help with param -h
 # param  string  optional: set to "all" to show all menu items
 function showMenu(){
@@ -153,46 +164,60 @@ function showMenu(){
 
     echo
     if [ $DC_REPO -eq 1 ] || [ $_bAll -eq 1 ]; then
+        menuhint $_bAll "Git data of starterkit were found"
         echo "${_spacer}$( _key g ) - remove git data of starterkit"
         echo
     fi
 
     if [ $isDockerRootless -eq 1 ] || [ $_bAll -eq 1 ]; then
+        menuhint $_bAll "Beause rootless docker was found"
         echo "${_spacer}$( _key i ) - init application: set permissions"
+        echo
     fi
 
     if [ $DC_CONFIG_CHANGED -eq 1 ] || [ $_bAll -eq 1 ]; then
+        menuhint $_bAll "Config was changed"
         echo "${_spacer}$( _key t ) - generate files from templates"
+        echo
     fi
     if [ $DC_CONFIG_CHANGED -eq 0 ] || [ $_bAll -eq 1 ]; then
+        menuhint $_bAll "Config is unchanged"
         echo "${_spacer}$( _key T ) - remove generated files"
+        echo
     fi
-    echo
     if [ $DC_WEB_UP -eq 0 ] || [ $DC_DB_UP -eq 0 ] || [ $_bAll -eq 1 ]; then
         if [ $DC_CONFIG_CHANGED -eq 0 ] || [ $_bAll -eq 1 ]; then
+            menuhint $_bAll "A container is down and config is unchanged"
             echo "${_spacer}$( _key u ) - startup containers    docker-compose ... up -d"
             echo "${_spacer}$( _key U ) - startup containers    docker-compose ... up -d --build"
             echo
             echo "${_spacer}$( _key r ) - remove containers     docker-compose rm -f"
+            echo
         fi
     fi
     if [ $DC_WEB_UP -eq 1 ] || [ $DC_DB_UP -eq 1 ] || [ $_bAll -eq 1 ]; then
+        menuhint $_bAll "${_spacer}A container is up"
         echo "${_spacer}$( _key s ) - shutdown containers   docker-compose stop"
         echo
         echo "${_spacer}$( _key m ) - more infos"
         echo "${_spacer}$( _key o ) - open app [${APP_NAME}] $DC_WEB_URL"
         echo "${_spacer}$( _key c ) - console (bash)"
+        echo
     fi
     if [ $DC_WEB_UP -eq 1 ] || [ $_bAll -eq 1 ]; then
+        menuhint $_bAll "Web container is up"
         echo "${_spacer}$( _key p ) - console check with php linter"
+        echo
     fi
     if [ $DC_DB_UP -eq 1 ] || [ $_bAll -eq 1 ]; then
         echo
+        menuhint $_bAll "Database container is up"
         echo "${_spacer}$( _key d ) - Dump container database"
         echo "${_spacer}$( _key D ) - Import Dump into container database"
         echo "${_spacer}$( _key M ) - Open Mysql client in database container"
+        echo
     fi
-    echo
+    menuhint $_bAll "Always available"
     echo "${_spacer}$( _key q ) - quit"
 
 }
diff --git a/docker/init.sh.cfg b/docker/init.sh.cfg
index 0f1cabf..bc6f16d 100644
--- a/docker/init.sh.cfg
+++ b/docker/init.sh.cfg
@@ -7,6 +7,7 @@
 #
 # ----------------------------------------------------------------------
 # 2021-12-17  <axel.hahn@iml.unibe.ch>
+# 2024-10-30  <axel.hahn@unibe.ch>       add DC_SHOW_MENUHINTS
 # ======================================================================
 
 APP_NAME=my_new_app
@@ -47,6 +48,11 @@ MYSQL_USER=${APP_NAME}
 MYSQL_PASS=mypassword
 MYSQL_DB=${APP_NAME}
 
+# ----------------------------------------------------------------------
+# Settings for init.sh
+
+# show hints for menu items in interactive mode
+DC_SHOW_MENUHINTS=0
 
 
 # ======================================================================
diff --git "a/docs/40_\342\232\231\357\270\217_Configuration/10_init.sh.cfg.md" "b/docs/40_\342\232\231\357\270\217_Configuration/10_init.sh.cfg.md"
index 933f0e2..a75f132 100644
--- "a/docs/40_\342\232\231\357\270\217_Configuration/10_init.sh.cfg.md"
+++ "b/docs/40_\342\232\231\357\270\217_Configuration/10_init.sh.cfg.md"
@@ -129,6 +129,7 @@ APP_PORT                      | int    | port number for your local machine that
 CUTTER_NO_DATABASE            | const  | do not change it; the string is used to cut templates from there if no database is used
 DB_ADD                        | bool   | flag: do you add a Mariadb container? default: false
 DB_PORT                       | int    | port number for your local machine that will be mapped to port 3306 in the container; You can use it in a local db manager; remark: tha apache container needs 3306 and not the mapped port.
+DC_SHOW_MENUHINTS             | int    | Flag to show a notice why menu items are visible; default: 0 (off)
 DOCKER_USER_UID               | int    | unix uid of the httpd service user in apache container; it's not needed to change; default: 33
 MYSQL_ALLOW_EMPTY_PASSWORD    | int    | flag: 0
 MYSQL_DB                      | string | name of database; defaut is app name ${APP_NAME}
-- 
GitLab