From 42f9adf30272aebd7d2bf73736e998b2b6a6fee6 Mon Sep 17 00:00:00 2001
From: "Hahn Axel (hahn)" <axel.hahn@iml.unibe.ch>
Date: Tue, 7 Jun 2022 10:03:06 +0200
Subject: [PATCH] fix iPkg2Update on empty package list

---
 check_packages2install | 31 +++++++++++++++++++------------
 1 file changed, 19 insertions(+), 12 deletions(-)

diff --git a/check_packages2install b/check_packages2install
index 116ed2e..cce6b7b 100755
--- a/check_packages2install
+++ b/check_packages2install
@@ -21,6 +21,8 @@
 # 2021-12-17  v1.7  <axel.hahn@iml.unibe.ch> show non matching packages in section "other"
 # 2021-12-20  v1.8  <axel.hahn@iml.unibe.ch> show all packages if no filter matched
 # 2022-06-03  v1.9  <axel.hahn@iml.unibe.ch> call yum with path; shellcheck updates; plugin like package managers
+# 2022-06-07  v1.10 <axel.hahn@iml.unibe.ch> fix iPkg2Update on empty package list
+#                                            rename package manager functions
 # ======================================================================
 
 
@@ -88,11 +90,17 @@ Get packages that must be updated on this system
 Licence: GNU GPL 3
 ______________________________________________________________________
 
-Get packages that must be updated on this system ans show found 
+Get packages that must be updated on this system and show found 
 packages in groups.
 
-For groups and their search filters see files in subdir 
-check_packages2install-data.
+RELATED FILES:
+1) For groups and their search filters see files in subdir 
+   check_packages2install-data.
+2) In the subdir check_packages2install-pkgmanager are scripts
+   for supported package managers (with aded ".sh").
+
+OUTPUT:
+It returns UNKNOWN if package manager is not supported.
 
 It returns OK if the system is up to date.
 It returns WARNING or ERROR if count of found pakackes is greater than
@@ -111,13 +119,12 @@ $_self [options]
 
 OPTIONS:
 
-    -h   show this help
     -w   custom warning level; default: $iWarnDefault
     -c   custom critical level; default: $iCriticalDefault
 
 PARAMETERS:
 
-    None.
+    -h   show this help
 
 EOF
 }
@@ -153,7 +160,7 @@ function _detectPkgManager(){
 function showFilteredPackages(){
 
   # filtered package view
-  if [ ! -z "$packages2install" ]; then
+  if [ -n "$packages2install" ]; then
       typeset -i iTotal
       iTotal=$( echo "$packages2install" | wc -l )
       typeset -i iFound=0
@@ -194,7 +201,6 @@ function showFilteredPackages(){
 
       # total packages
       echo Total packages to install: $iTotal
-      ph.perfadd "updates-available" "$iTotal"  ${iWarnLimit} ${iCriticalLimit}
 
   fi
 
@@ -224,7 +230,7 @@ fi
 # load functions for the detected package manager
 . "${dir_pkg}/${pkgmanager}.sh" || exit 2
 
-packagemanOut=$( ${pkgmanager}GetUpdates )
+packagemanOut=$( ${pkgmanager}.GetUpdates )
 
 if [ -z "$packagemanOut" ]; then
   ph.setStatus "critical"
@@ -232,9 +238,9 @@ if [ -z "$packagemanOut" ]; then
 else
 
   # generated function names - package manager is prefix
-  function2install="${pkgmanager}Packages"
-  _functionExists "${pkgmanager}Status"    && functionStatus="${pkgmanager}Status"
-  _functionExists "${pkgmanager}Critical"  && functionCritical="${pkgmanager}Critical"
+  function2install="${pkgmanager}.getPackageList"
+  _functionExists "${pkgmanager}.getStatusLine"    && functionStatus="${pkgmanager}.getStatusLine"
+  _functionExists "${pkgmanager}.getCriticalList"  && functionCritical="${pkgmanager}.getCriticalList"
 
   # count of packages ... to install ... critical (centos only)
   typeset -i iPkg2Update=0
@@ -242,7 +248,7 @@ else
 
   # get list of packages 2 install
   packages2install=$( $function2install )
-  iPkg2Update=$( echo "$packages2install" | wc -l )
+  iPkg2Update=$( test -n "$packages2install" && echo "$packages2install" | wc -l )
 
   # custom: status text
   test -n "$functionStatus" && statusLabel="[$pkgmanager] $( $functionStatus )"
@@ -259,6 +265,7 @@ else
   else
     ph.setStatusByLimit ${iPkg2Update} ${iWarnLimit} ${iCriticalLimit}
   fi
+  ph.perfadd "updates-available" "${iPkg2Update}" "${iWarnLimit}" "${iCriticalLimit}"
 
   # set label for status line
   if [ -z "$statusLabel" ]; then
-- 
GitLab