* Use colored output only on terminals.
authorUrban Wallasch <urban.wallasch@freenet.de>
Tue, 21 Apr 2020 09:49:51 +0000 (11:49 +0200)
committerUrban Wallasch <urban.wallasch@freenet.de>
Tue, 21 Apr 2020 09:49:51 +0000 (11:49 +0200)
* Print the command being executed.
* Several small improvements.
* Bumped version to 2.0.3.

XbpsUI.sh

index c254c43ab5f21bfb3065886ffa90459b965967bc..4e82a7276a557dba5c07ec0ad5da052bd5627a8f 100755 (executable)
--- a/XbpsUI.sh
+++ b/XbpsUI.sh
@@ -1,6 +1,6 @@
 #!/bin/bash
 
-verstr="XbpsUI 2.0.2"
+verstr="XbpsUI 2.0.3"
 
 # Evaluate command line:
 for arg in "$@" ; do
@@ -19,11 +19,17 @@ for arg in "$@" ; do
 done
 
 # Check, if run interactively:
-if ! tty -s ; then
+if [ ! -t 0 ] ; then
     echo "Standard input is not a tty, aborting."
     exit 1
 fi
 
+# Enable colored output only for terminals:
+useColor=0
+if [ -t 1 ] ; then
+    useColor=1
+fi
+
 # Make sure we can actually do anything meaningful:
 if ! command -pv "xbps-install" > /dev/null ; then
     echo "The xbps packaging system is not available, aborting."
@@ -85,37 +91,45 @@ trapWithArg cleanup EXIT SIGINT SIGTERM SIGQUIT SIGHUP
 # 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" ;;
+       bold )  shift; (( $useColor )) && echo -en "\e[1m" ;;
+       green ) shift; (( $useColor )) && echo -en "\e[49;32m" ;;
+       red )   shift; (( $useColor )) && echo -en "\e[49;31m" ;;
+       cyan )  shift; (( $useColor )) && echo -en "\e[49;36m" ;;
     esac
     echo -en $@
-    echo -en "\e[0m"
+    (( $useColor )) && echo -en "\e[0m"
+}
+
+# Print and run a command:
+function runCmd() {
+    prmsg cyan $@
+    echo
+    $@
 }
 
 # Update repository package database:
 function syncRepo() {
     prmsg bold "Update package lists:\n"
-    $SUDO xbps-install -Sv
+    runCmd $SUDO xbps-install -Sv
 }
 
 # Update all installed packages to their latest version:
 function distUpgrade() {
     prmsg bold "Upgrade installed packages:\n"
-    $SUDO xbps-install -Suv
+    runCmd $SUDO xbps-install -Suv
 }
 
 # Clean cache by removing obsolete binary packages:
 function cleanCache() {
     prmsg bold "Clean package cache:\n"
-    $SUDO xbps-remove -Ov
+    runCmd $SUDO xbps-remove -Ov
 }
 
 # Remove orphaned packages:
 function reapOrphans() {
-    prmsg bold "Searching for orphans:\n"
+    prmsg bold "Remove orphans:\n"
     if [[ -n "$( xbps-query -O )" ]] ; then
-        $SUDO xbps-remove -ov
+        runCmd $SUDO xbps-remove -ov
         return $?
     fi
     prmsg "None found.\n"
@@ -153,9 +167,8 @@ function instPkg() {
         )"
     prmsg bold "Install:\n"
     if [[ -n "$pkg" ]] ; then
-        echo "$pkg"
         pkg="$( echo "$pkg" | paste -sd " " )"
-        $SUDO xbps-install -v -S $pkg
+        runCmd $SUDO xbps-install -v -S $pkg
         return $?
     fi
     return 42
@@ -173,9 +186,8 @@ function reinstPkg() {
         )"
     prmsg bold "Reinstall:\n"
     if [[ -n "$pkg" ]] ; then
-        echo "$pkg"
         pkg="$( echo "$pkg" | paste -sd " " )"
-        $SUDO xbps-install -v -f -S $pkg
+        runCmd $SUDO xbps-install -v -f -S $pkg
         return $?
     fi
     return 42
@@ -194,9 +206,8 @@ function purgePkg() {
 
     prmsg bold "Purge:\n"
     if [[ -n "$pkg" ]] ; then
-        echo "$pkg"
         pkg="$( echo "$pkg" | paste -sd " " )"
-        $SUDO xbps-remove -v -R $pkg
+        runCmd $SUDO xbps-remove -v -R $pkg
         return $?
     fi
     return 42
@@ -215,9 +226,8 @@ function reconfPkg() {
 
     prmsg bold "Reconfigure:\n"
     if [[ -n "$pkg" ]] ; then
-        echo "$pkg"
         pkg="$( echo "$pkg" | paste -sd " " )"
-        $SUDO xbps-reconfigure -f -v $pkg
+        runCmd $SUDO xbps-reconfigure -f -v $pkg
         return $?
     fi
     return 42
@@ -233,11 +243,10 @@ function holdPkg() {
                 --header="Select packages to put on hold.$fzfHint"
         )"
 
-    prmsg bold "Put on hold:\n"
+    prmsg bold "Hold packages:\n"
     if [[ -n "$pkg" ]] ; then
-        echo "$pkg"
         pkg="$( echo "$pkg" | paste -sd " " )"
-        $SUDO xbps-pkgdb -v -m hold $pkg
+        runCmd $SUDO xbps-pkgdb -v -m hold $pkg
         return $?
     fi
     return 42
@@ -254,9 +263,8 @@ function unholdPkg() {
 
     prmsg bold "Unhold held packages:\n"
     if [[ -n "$pkg" ]] ; then
-        echo "$pkg"
         pkg="$( echo "$pkg" | paste -sd " " )"
-        $SUDO xbps-pkgdb -v -m unhold $pkg
+        runCmd $SUDO xbps-pkgdb -v -m unhold $pkg
         return $?
     fi
     return 42
@@ -272,11 +280,10 @@ function markPkgManual() {
                 --header="Select packages to mark as manual.$fzfHint"
         )"
 
-    prmsg bold "Marking as manually installed:\n"
+    prmsg bold "Mark as manually installed:\n"
     if [[ -n "$pkg" ]] ; then
-        echo "$pkg"
         pkg="$( echo "$pkg" | paste -sd " " )"
-        $SUDO xbps-pkgdb -v -m manual $pkg
+        runCmd $SUDO xbps-pkgdb -v -m manual $pkg
         return $?
     fi
     return 42
@@ -291,11 +298,10 @@ function markPkgAuto() {
                 --header="Select packages to mark as as auto.$fzfHint"
         )"
 
-    prmsg bold "Marking as automatically installed:\n"
+    prmsg bold " Mark as automatically installed:\n"
     if [[ -n "$pkg" ]] ; then
-        echo "$pkg"
         pkg="$( echo "$pkg" | paste -sd " " )"
-        $SUDO xbps-pkgdb -v -m auto $pkg
+        runCmd $SUDO xbps-pkgdb -v -m auto $pkg
         return $?
     fi
     return 42
@@ -329,10 +335,6 @@ quit        Quit" |
        --header=$'\n'"$verstr"$'\n\n' |
        awk '{ print $1 }'
     )"
-    if [[ -z "$choice" ]] ; then
-       # quit / cancel menu
-       exit 0
-    fi
     
     # Perform requested action:
     echo
@@ -350,7 +352,7 @@ quit        Quit" |
         "auto" )       markPkgAuto   ;;
         "hold" )       holdPkg       ;;
         "unhold" )     unholdPkg     ;;
-        "quit" )       exit 0        ;;
+        "quit"|"" )    exit 0        ;;
         * )            echo "$choice: Action not implemented, WTF!?!" ; false ;;
     esac
     return $?