$SUDO xbps-remove -ov
}
+# Fzf options common to all actions:
+fzfOpt=(
+ -i
+ --multi
+ --exact
+ --no-sort
+ --cycle
+ --inline-info
+ --reverse
+ --prompt="filter> "
+ --margin="4%,1%,1%,2%"
+ --preview-window=right:55%:wrap
+)
+fzfHint=$'\nTAB toggle | ENTER proceed | ESC cancel'
+
# Install new packages:
function instPkg() {
pkg="$( xbps-query -Rs "" |
awk '{print $1, $2}' |
sort -u |
- fzf -i \
- --multi \
- --exact \
- --no-sort \
- --cycle \
- --reverse \
- --margin="4%,1%,1%,2%" \
- --inline-info \
+ fzf "${fzfOpt[@]}" \
--preview 'xbps-query -R {2} '\
- --preview-window=right:55%:wrap \
- --header="Select packages to install.
-TAB toggle | ENTER proceed | ESC cancel" \
- --prompt="filter> " |
+ --header="Select packages to install.$fzfHint" |
awk '{print $2}'
)"
if [[ -n "$pkg" ]] ; then
pkg="$( xbps-query -l |
awk '{print $1, $2}' |
sort -u |
- fzf -i \
- --multi \
- --exact \
- --no-sort \
- --cycle \
- --reverse \
- --margin="4%,1%,1%,2%" \
- --inline-info \
+ fzf "${fzfOpt[@]}" \
--preview 'xbps-query -R {2} '\
- --preview-window=right:55%:wrap \
- --header="Select packages to reinstall.
-TAB toggle | ENTER proceed | ESC cancel" \
- --prompt="filter> " |
+ --header="Select packages to reinstall.$fzfHint" |
awk '{print $2}'
)"
if [[ -n "$pkg" ]] ; then
pkg="$( xbps-query -l |
awk '{print $1, $2}' |
sort -u |
- fzf -i \
- --multi \
- --exact \
- --no-sort \
- --cycle \
- --reverse \
- --margin="4%,1%,1%,2%" \
- --inline-info \
+ fzf "${fzfOpt[@]}" \
--preview 'xbps-query -S {2} '\
- --preview-window=right:55%:wrap \
- --header="Select packages to purge.
-TAB toggle | ENTER proceed | ESC cancel" \
- --prompt="filter> " |
+ --header="Select packages to purge.$fzfHint" |
awk '{print $2}'
)"
pkg="$( xbps-query -l |
awk '{print $1, $2}' |
sort -u |
- fzf -i \
- --multi \
- --exact \
- --no-sort \
- --cycle \
- --reverse \
- --margin="4%,1%,1%,2%" \
- --inline-info \
+ fzf "${fzfOpt[@]}" \
--preview 'xbps-query -S {2} '\
- --preview-window=right:55%:wrap \
- --header="Select packages to reconfigure.
-TAB toggle | ENTER proceed | ESC cancel" \
- --prompt="filter> " |
+ --header="Select packages to reconfigure.$fzfHint" |
awk '{print $2}'
)"
pkg="$( xbps-query -l |
awk '{print $2}' |
sort -u |
- fzf -i \
- --multi \
- --exact \
- --no-sort \
- --cycle \
- --reverse \
- --margin="4%,1%,1%,2%" \
- --inline-info \
+ fzf "${fzfOpt[@]}" \
--preview 'xbps-query -S {1} '\
- --preview-window=right:55%:wrap \
- --header="Select packages to put on hold.
-TAB toggle | ENTER proceed | ESC cancel" \
- --prompt="filter> "
+ --header="Select packages to put on hold.$fzfHint"
)"
if [[ -n "$pkg" ]] ; then
function unholdPkg() {
pkg="$( xbps-query -H |
sort -u |
- fzf -i \
- --multi \
- --exact \
- --no-sort \
- --cycle \
- --reverse \
- --margin="4%,1%,1%,2%" \
- --inline-info \
+ fzf "${fzfOpt[@]}" \
--preview 'xbps-query -R {1} '\
- --preview-window=right:55%:wrap \
- --header="Select packages to unhold.
-TAB toggle | ENTER proceed | ESC cancel" \
- --prompt="filter> "
+ --header="Select packages to unhold.$fzfHint"
)"
if [[ -n "$pkg" ]] ; then
pkg="$( xbps-query -l |
awk '{print $2}' |
sort -u |
- fzf -i \
- --multi \
- --exact \
- --no-sort \
- --cycle \
- --reverse \
- --margin="4%,1%,1%,2%" \
- --inline-info \
+ fzf "${fzfOpt[@]}" \
--preview 'xbps-query -S {1} '\
- --preview-window=right:55%:wrap \
- --header="Select packages to mark as manual.
-TAB toggle | ENTER proceed | ESC cancel" \
- --prompt="filter> "
+ --header="Select packages to mark as manual.$fzfHint"
)"
if [[ -n "$pkg" ]] ; then
function markPkgAuto() {
pkg="$( xbps-query -m |
sort -u |
- fzf -i \
- --multi \
- --exact \
- --no-sort \
- --cycle \
- --reverse \
- --margin="4%,1%,1%,2%" \
- --inline-info \
+ fzf "${fzfOpt[@]}" \
--preview 'xbps-query -R {1} '\
- --preview-window=right:55%:wrap \
- --header="Select packages to mark as as auto.
-TAB toggle | ENTER proceed | ESC cancel" \
- --prompt="filter> "
+ --header="Select packages to mark as as auto.$fzfHint"
)"
if [[ -n "$pkg" ]] ; then
exec 3>&-
clear
if (( $res != 0 )) ; then
- # quit / cancel dialog
+ # quit / cancel menu
exit 0
fi
else
# Use fzf(1) for main menu.
- nl=$'\n'
- hstr="$nl$verstr$nl$nl"
- choice="$( echo \
-$'sync Synchronize repository package database
+ choice="$( echo "\
+sync Synchronize repository package database
upgrade Update all packages to their latest version
install Install a new package
reinstall Re-install an already installed package
auto Mark packages as automatically installed
hold Set packages on hold
unhold Unhold held packages
-quit Quit' |
+quit Quit" |
fzf -i \
--no-multi \
--exact \
+ --bind q:abort,home:top,end:page-down \
--no-sort \
--cycle \
--reverse \
--margin="4%,1%,1%,2%" \
--inline-info \
- --header="$hstr" |
+ --header=$'\n'"$verstr"$'\n\n' |
awk '{ print $1 }'
)"
- res=$?
if [[ -z "$choice" ]] ; then
- # quit / cancel dialog
+ # quit / cancel menu
exit 0
fi
fi
- # Perform requested operation:
+ # Perform requested action:
case "$choice" in
"sync" ) syncRepo ;;
"upgrade" ) distUpgrade ;;
"hold" ) holdPkg ;;
"unhold" ) unholdPkg ;;
"quit" ) exit 0 ;;
- * ) echo "Unknown operation, WTF!?!" ; false ;;
+ * ) echo "Action not implemented, WTF!?!" ; false ;;
esac
return $?
}