#!/bin/bash
-verstr="XbpsUI 2.0.2"
+verstr="XbpsUI 2.0.3"
# Evaluate command line:
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."
# 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"
)"
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
)"
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
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
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
--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
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
--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
--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
--header=$'\n'"$verstr"$'\n\n' |
awk '{ print $1 }'
)"
- if [[ -z "$choice" ]] ; then
- # quit / cancel menu
- exit 0
- fi
# Perform requested action:
echo
"auto" ) markPkgAuto ;;
"hold" ) holdPkg ;;
"unhold" ) unholdPkg ;;
- "quit" ) exit 0 ;;
+ "quit"|"" ) exit 0 ;;
* ) echo "$choice: Action not implemented, WTF!?!" ; false ;;
esac
return $?