From c400722d9145c37f76e9c7bf9cb9181fd648762f Mon Sep 17 00:00:00 2001
From: "Hahn Axel (hahn)" <axel.hahn@unibe.ch>
Date: Fri, 26 Jul 2024 17:05:46 +0200
Subject: [PATCH] hide unnecessary menu items (WIP)

---
 docker/init.sh | 152 ++++++++++++++++++++++++++++++-------------------
 1 file changed, 94 insertions(+), 58 deletions(-)

diff --git a/docker/init.sh b/docker/init.sh
index 4f9d33e..405a086 100755
--- a/docker/init.sh
+++ b/docker/init.sh
@@ -20,6 +20,7 @@
 # 2024-07-22  v1.13 <axel.hahn@unibe.ch>      show info if there is no database container; speedup replacements
 # 2024-07-22  v1.14 <axel.hahn@unibe.ch>      show colored boxes with container status
 # 2024-07-24  v1.15 <axel.hahn@unibe.ch>      update menu output
+# 2024-07-26  v1.16 <axel.hahn@unibe.ch>      hide unnecessary menu items (WIP)
 # ======================================================================
 
 cd "$( dirname "$0" )" || exit 1
@@ -33,7 +34,7 @@ _self=$( basename "$0" )
 # shellcheck source=/dev/null
 . "${_self}.cfg" || exit 1
 
-_version="1.15"
+_version="1.16"
 
 # git@git-repo.iml.unibe.ch:iml-open-source/docker-php-starterkit.git
 selfgitrepo="docker-php-starterkit.git"
@@ -45,6 +46,15 @@ fgBrown="\e[33m"
 fgBlue="\e[34m"
 fgReset="\e[0m"
 
+# ----- status varsiables
+# running containers
+DC_WEB_UP=0
+DC_DB_UP=0
+
+# repo of docker-php-starterkit is here?
+DC_REPO=1
+
+DC_CONFIG_CHANGED=0
 
 # ----------------------------------------------------------------------
 # FUNCTIONS
@@ -64,26 +74,37 @@ function h3(){
 
 # show help for param -h
 function showMenu(){
-    cat <<EOM
+    _getStatus_repo
+    local _spacer="    "
+
+    echo
+    if [ $DC_REPO -eq 1 ]; then
+        echo "${_spacer}$( _key g ) - remove git data of starterkit"
+        echo
+    fi
+    echo "${_spacer}$( _key i ) - init application: set permissions"
+    echo "${_spacer}$( _key t ) - generate files from templates"
+    echo "${_spacer}$( _key T ) - remove generated files"
+    echo ""
+    if [ $DC_WEB_UP -eq 0 ];
+    then
+        echo "${_spacer}$( _key u ) - startup containers    docker-compose ... up -d"
+        echo "${_spacer}$( _key U ) - startup containers    docker-compose ... up -d --build"
+    else
+        echo "${_spacer}$( _key s ) - shutdown containers   docker-compose stop"
+        echo "${_spacer}$( _key r ) - remove containers     docker-compose rm -f"
+    fi
+    echo ""
+    if [ $DC_WEB_UP -eq 1 ];
+    then
+        echo "${_spacer}$( _key m ) - more infos"
+        echo "${_spacer}$( _key o ) - open app [${APP_NAME}] $frontendurl"
+        echo "${_spacer}$( _key c ) - console (bash)"
+        echo "${_spacer}$( _key p ) - console check with php linter"
+        echo ""
+    fi
+    echo "${_spacer}$( _key q ) - quit"
 
-    $( _key g ) - remove git data of starterkit
-    
-    $( _key i ) - init application: set permissions
-    $( _key t ) - generate files from templates
-    $( _key T ) - remove generated files
- 
-    $( _key u ) - startup containers    docker-compose ... up -d
-    $( _key U ) - startup containers    docker-compose ... up -d --build
-    $( _key s ) - shutdown containers   docker-compose stop
-    $( _key r ) - remove containers     docker-compose rm -f
- 
-    $( _key m ) - more infos
-    $( _key o ) - open app [${APP_NAME}] $frontendurl
-    $( _key c ) - console (bash)
-    $( _key p ) - console check with php linter
- 
-    $( _key q ) - quit
-EOM
 }
 function showHelp(){
     cat <<EOH
@@ -156,7 +177,7 @@ function _removeGitdata(){
     h2 "Remove git data of starterkit"
     echo -n "Current git remote url: "
     git config --get remote.origin.url
-    if git config --get remote.origin.url 2>/dev/null | grep $selfgitrepo >/dev/null; then
+    if git config --get remote.origin.url 2>/dev/null | grep -q $selfgitrepo; then
         echo
         echo -n "Delete local .git and .gitignore? [y/N] > "
         read -r answer
@@ -278,9 +299,38 @@ function _removeGeneratedFiles(){
     done
 }
 
+
+# get container status and set global variable DC_REPO
+# DC_REPO = 0 nothing to do - repo was changed to project
+# DC_REPO = 1 if repo is in selfgitrepo (must be deleted)
+function _getStatus_repo(){
+    DC_REPO=0
+    git config --get remote.origin.url 2>/dev/null | grep -q $selfgitrepo && DC_REPO=1
+}
+
+
+# get container status and set global variables
+# DC_WEB_UP - web container 
+# DC_DB_UP  - database container
+#   0 = down
+#   1 = up
+function _getStatus_docker(){
+    local _out
+
+    _out=$( docker-compose -p "$APP_NAME" ps)    
+
+    DC_WEB_UP=0
+    DC_DB_UP=0
+
+    grep -q "${APP_NAME}-server" <<< "$_out" && DC_WEB_UP=1
+    grep -q "${APP_NAME}-db"     <<< "$_out"  && DC_DB_UP=1
+}
+
 # show running containers
 function _showContainers(){
     local bLong=$1
+    _getStatus_docker
+
     local _out
 
     local sUp=".. UP"
@@ -288,56 +338,42 @@ function _showContainers(){
 
     local Status=
     local StatusWeb="$sDown"
-    local StatusDb=""
+    local StatusDb="$sDown"
     local colWeb=
     local colDb=
 
     colDb="$fgRed"
     colWeb="$fgRed"
 
-    _out=$( if [ -z "$bLong" ]; then
-        docker-compose -p "$APP_NAME" ps
-    else
-        # docker ps | grep "$APP_NAME"
-        docker-compose -p "$APP_NAME" ps
-    fi)
-
-    h2 CONTAINERS
-    if [ "$( wc -l <<< "$_out" )"  -eq 1 ]; then
-        if [ "$DB_ADD" = "false" ]; then
-            colDb="$fgGray"
-            Status="The web container is not running. This app has no database container."
-        else
-            StatusDb="down"
-            Status="No container is running for <$APP_NAME>."
-        fi
-    else
-        grep -q "${APP_NAME}-server" <<< "$_out" && colWeb="$fgGreen"
-        grep -q "${APP_NAME}-server" <<< "$_out" && StatusWeb="$sUp"
-
-        grep -q "${APP_NAME}-db" <<< "$_out"  && colDb="$fgGreen"
-        StatusDb="$sDown"
-        grep -q "${APP_NAME}-db" <<< "$_out"  && StatusDb="$sUp"
+    if [ $DC_WEB_UP -eq 1 ]; then
+        colWeb="$fgGreen"
+        StatusWeb="$sUp"
+    fi
+    
+    if [ $DC_DB_UP -eq 1 ]; then
+        colDb="$fgGreen"
+        StatusDb="$sUp"
+    fi
 
-        if [ "$DB_ADD" = "false" ]; then
-            colDb="$fgGray"
-            StatusDb=""
-            Status="INFO: This app has no database container."
-        fi
+    if [ "$DB_ADD" = "false" ]; then
+        colDb="$fgGray"
+        local StatusDb=".. N/A"
+        Status="This app has no database container."
     fi
 
-    printf "$colWeb     __________________________  $colDb   __________________________    $fgReset \n"
-    printf "$colWeb    |  %-22s  |  $colDb |  %-22s  | $fgReset \n" ""                             ""
-    printf "$colWeb    |  %-22s  |  $colDb |  %-22s  | $fgReset \n" "${APP_NAME}-web ${StatusWeb}" "${APP_NAME}-db ${StatusDb}"
-    printf "$colWeb    |  %-22s  |  $colDb |  %-22s  | $fgReset \n" "  PHP ${APP_PHP_VERSION}"     "  ${MYSQL_IMAGE}"
-    printf "$colWeb    |  %-22s  |  $colDb |  %-22s  | $fgReset \n" "  :${APP_PORT}"               "  :${DB_PORT}"
-    printf "$colWeb    |__________________________| $colDb  |__________________________|   $fgReset \n"
+    h2 CONTAINERS
+    printf "$colWeb     _____________________________  $colDb   _____________________________    $fgReset \n"
+    printf "$colWeb    |  %-25s  |  $colDb |  %-25s  | $fgReset \n" ""                              ""
+    printf "$colWeb    |  %-25s  |  $colDb |  %-25s  | $fgReset \n" "${APP_NAME}-web ${StatusWeb}"  "${APP_NAME}-db ${StatusDb}"
+    printf "$colWeb    |  %-25s  |  $colDb |  %-25s  | $fgReset \n" "  PHP ${APP_PHP_VERSION}"      "  ${MYSQL_IMAGE}"
+    printf "$colWeb    |  %-25s  |  $colDb |  %-25s  | $fgReset \n" "  :${APP_PORT}"                "  :${DB_PORT}"
+    printf "$colWeb    |_____________________________| $colDb  |_____________________________|   $fgReset \n"
+    echo
 
     if [ -n "$Status" ]; then
-        echo
         echo "$Status"
+        echo
     fi
-    echo
 
     if [ -n "$bLong" ]; then
         echo "$_out"
-- 
GitLab