* Check, if running interactive.
authorUrban Wallasch <urban.wallasch@freenet.de>
Fri, 17 Apr 2020 13:01:38 +0000 (15:01 +0200)
committerUrban Wallasch <urban.wallasch@freenet.de>
Fri, 17 Apr 2020 13:01:38 +0000 (15:01 +0200)
* Improved messages, comments.

XbpsUI.sh

index 9ca017a6c45151eecb770a2899523422280bdf18..ac29943ecad6040971387d0cc3d06c1f0e518790 100755 (executable)
--- a/XbpsUI.sh
+++ b/XbpsUI.sh
@@ -22,6 +22,11 @@ for arg in "$@" ; do
     esac
 done
 
+# Check, if run interactively:
+if ! tty -s ; then
+    echo "Standard input is not a tty, aborting."
+    exit 1
+fi
 
 # Make sure we can actually do anything meaningful:
 SUDO=''
@@ -108,31 +113,47 @@ menubox_border2_color = dialog_color
 " > $tmp/dialogrc
 fi
 
+# Pretty printing:
+function prmsg() {
+    case "$1" in
+       bold )  shift; echo -en "\e[1m" ;;
+       green ) shift; echo -en "\e[49;32m" ;;
+       red )   shift; echo -en "\e[49;31m" ;;
+    esac
+    echo -en $@
+    echo -en "\e[0m"
+}
+
 # Update repository package database:
 function syncRepo() {
-    echo -e "\nUpdate package lists ..."
+    prmsg bold "Update package lists:\n"
     $SUDO xbps-install -Sv
 }
 
 # Update all installed packages to their latest version:
 function distUpgrade() {
-    echo -e "\nUpgrade all packages ..."
+    prmsg bold "Upgrade installed packages:\n"
     $SUDO xbps-install -Suv
 }
 
 # Clean cache by removing obsolete binary packages:
 function cleanCache() {
-    echo -e "\nCleaning package cache ..."
+    prmsg bold "Clean package cache:\n"
     $SUDO xbps-remove -Ov
 }
 
 # Remove orphaned packages:
 function reapOrphans() {
-    echo -e "\nSearching for orphans ..."
-    $SUDO xbps-remove -ov
+    prmsg bold "Searching for orphans:\n"
+    if [[ -n "$( xbps-query -O )" ]] ; then
+        $SUDO xbps-remove -ov
+        return $?
+    fi
+    prmsg "None found.\n"
+    return 42
 }
 
-# Fzf options common to all actions:
+# Fzf options common to all actions below:
 fzfOpt=(
     -i
     --multi
@@ -161,7 +182,7 @@ function instPkg() {
                 --header="Select packages to install.$fzfHint" |
             awk '{print $2}'
         )"
-    echo -e "\nInstall:"
+    prmsg bold "Install:\n"
     if [[ -n "$pkg" ]] ; then
         echo "$pkg"
         pkg="$( echo "$pkg" | paste -sd " " )"
@@ -181,7 +202,7 @@ function reinstPkg() {
                 --header="Select packages to reinstall.$fzfHint" |
             awk '{print $2}'
         )"
-    echo -e "\nReinstall:"
+    prmsg bold "Reinstall:\n"
     if [[ -n "$pkg" ]] ; then
         echo "$pkg"
         pkg="$( echo "$pkg" | paste -sd " " )"
@@ -202,7 +223,7 @@ function purgePkg() {
             awk '{print $2}'
         )"
 
-    echo -e "\nPurge:"
+    prmsg bold "Purge:\n"
     if [[ -n "$pkg" ]] ; then
         echo "$pkg"
         pkg="$( echo "$pkg" | paste -sd " " )"
@@ -223,7 +244,7 @@ function reconfPkg() {
             awk '{print $2}'
         )"
 
-    echo -e "\nReconfigure:"
+    prmsg bold "Reconfigure:\n"
     if [[ -n "$pkg" ]] ; then
         echo "$pkg"
         pkg="$( echo "$pkg" | paste -sd " " )"
@@ -243,7 +264,7 @@ function holdPkg() {
                 --header="Select packages to put on hold.$fzfHint"
         )"
 
-    echo -e "\nPut on hold:"
+    prmsg bold "Put on hold:\n"
     if [[ -n "$pkg" ]] ; then
         echo "$pkg"
         pkg="$( echo "$pkg" | paste -sd " " )"
@@ -262,7 +283,7 @@ function unholdPkg() {
                 --header="Select packages to unhold.$fzfHint"
         )"
 
-    echo -e "\nUnhold held packages:"
+    prmsg bold "Unhold held packages:\n"
     if [[ -n "$pkg" ]] ; then
         echo "$pkg"
         pkg="$( echo "$pkg" | paste -sd " " )"
@@ -282,7 +303,7 @@ function markPkgManual() {
                 --header="Select packages to mark as manual.$fzfHint"
         )"
 
-    echo -e "\nMarking as manually installed:"
+    prmsg bold "Marking as manually installed:\n"
     if [[ -n "$pkg" ]] ; then
         echo "$pkg"
         pkg="$( echo "$pkg" | paste -sd " " )"
@@ -301,7 +322,7 @@ function markPkgAuto() {
                 --header="Select packages to mark as as auto.$fzfHint"
         )"
 
-    echo -e "\nMarking as automatically installed:"
+    prmsg bold "Marking as automatically installed:\n"
     if [[ -n "$pkg" ]] ; then
         echo "$pkg"
         pkg="$( echo "$pkg" | paste -sd " " )"
@@ -384,6 +405,8 @@ quit        Quit" |
     fi
     
     # Perform requested action:
+    echo
+    date
     case "$choice" in
         "sync" )       syncRepo      ;;
         "upgrade" )    distUpgrade   ;;
@@ -405,11 +428,10 @@ quit        Quit" |
 
 # Report exit status of an operation:
 function statrep() {
-    echo
     case "$1" in
-         0 ) echo -e "\e[49;32mOK\e[0m" ;;
-        42 ) echo -e "\e[1mNo changes requested.\e[0m" ;;
-         * ) echo -e "\e[49;31mFAILED! (exit code $1)\e[0m" ;;
+         0 ) prmsg green "OK\n" ;;
+        42 ) prmsg bold "No changes requested.\n" ;;
+         * ) prmsg red "FAILED! (exit code $1)\n" ;;
     esac
     echo "Press any key to continue ..."
     read -sn1