From 31f7a0f6d755818e9aaec339aeb910ef6a99c2ac Mon Sep 17 00:00:00 2001 From: Urban Wallasch Date: Fri, 10 Apr 2020 12:09:57 +0200 Subject: [PATCH] * several fixes and enhancements --- XbpsUI.sh | 376 ++++++++++++++++++++++++++++++++---------------------- 1 file changed, 226 insertions(+), 150 deletions(-) diff --git a/XbpsUI.sh b/XbpsUI.sh index 63d2f78..dcf7df5 100755 --- a/XbpsUI.sh +++ b/XbpsUI.sh @@ -2,150 +2,232 @@ function update { - #command to update de system - sudo xbps-install -Suv + sudo xbps-install -Suv + return $? +} + +function maintain +{ + sudo xbps-remove -Oov + return $? } function install { - #declaration of local variables - local pkg - local argument_input - - #selecting of packages to install - #flags multi to be able to pick multiple packages - #exact to match exact match - #no sort self explanatory - #cycle to enable cycle scroll - #reverse to set orientation to reverse - #margin for margins - #inline info to display info inline - #preview to show the package description - #header and prompt to give info for people to know how to do stuff - pkg="$( xbps-query -Rs "" | sort -u | grep -v "*" | fzf -i \ - --multi --exact --no-sort --select-1 --query="$argument_input" \ - --cycle --reverse --margin="4%,1%,1%,2%" \ - --inline-info \ - --preview 'xbps-query -R {2} '\ - --preview-window=right:55%:wrap \ - --header="TAB key to (un)select. ENTER to install. ESC to quit." \ - --prompt="filter> " | awk '{print $2}' - )" - pkg="$( echo "$pkg" | paste -sd " " )" - if [[ -n "$pkg" ]] - then - clear - sudo xbps-install -S $pkg - fi + pkg="$( xbps-query -Rs "" | + grep '^\[-\]' | + awk '{print $2}' | + sort -u | + fzf -i \ + --multi \ + --exact \ + --no-sort \ + --cycle \ + --reverse \ + --margin="4%,1%,1%,2%" \ + --inline-info \ + --preview 'xbps-query -R {1} '\ + --preview-window=right:55%:wrap \ + --header="Select packages to install. +TAB toggle | ENTER proceed | ESC cancel" \ + --prompt="filter> " | + awk '{print $2}' + )" + if [[ -n "$pkg" ]] ; then + echo "Install:" + echo "$pkg" + pkg="$( echo "$pkg" | paste -sd " " )" + sudo xbps-install -v -S $pkg + return $? + fi + return 42 } function purge { - local pkg - local argument_input - pkg="$( xbps-query -l | sort -u | - fzf -i \ - --multi \ - --exact \ - --no-sort \ - --select-1 \ - --query="$argument_input" \ - --cycle \ - --reverse \ - --margin="4%,1%,1%,2%" \ - --inline-info \ - --preview 'xbps-query -S {2} '\ - --preview-window=right:55%:wrap \ - --header="TAB key to (un)select. ENTER to purge. ESC to quit." \ - --prompt="filter> " | - 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 \ + --preview 'xbps-query -S {2} '\ + --preview-window=right:55%:wrap \ + --header="Select packages to purge. +TAB toggle | ENTER proceed | ESC cancel" \ + --prompt="filter> " | + awk '{print $2}' + )" + + if [[ -n "$pkg" ]] ; then + echo "Purge:" + echo "$pkg" + pkg="$( echo "$pkg" | paste -sd " " )" + sudo xbps-remove -v -R $pkg + return $? + fi + return 42 +} + +function hold +{ + 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 \ + --preview 'xbps-query -S {2} '\ + --preview-window=right:55%:wrap \ + --header="Select packages to put on hold. +TAB toggle | ENTER proceed | ESC cancel" \ + --prompt="filter> " | + awk '{print $2}' + )" - pkg="$( echo "$pkg" | paste -sd " " )" - if [[ -n "$pkg" ]] - then - clear - sudo xbps-remove -R $pkg - fi + if [[ -n "$pkg" ]] ; then + echo "Hold:" + echo "$pkg" + pkg="$( echo "$pkg" | paste -sd " " )" + sudo xbps-pkgdb -v -m hold $pkg + return $? + fi + return 42 } function unhold { - local pkg - local argument_input - pkg="$( xbps-query -p hold -s "" | sort -u | - fzf -i \ - --multi \ - --exact \ - --no-sort \ - --select-1 \ - --query="$argument_input" \ - --cycle \ - --reverse \ - --margin="4%,1%,1%,2%" \ - --inline-info \ - --header="TAB key to (un)select. ENTER to unhold. ESC to quit." \ - --prompt="filter> " | - awk '{print $1}' - )" + pkg="$( xbps-query -H | + sort -u | + fzf -i \ + --multi \ + --exact \ + --no-sort \ + --cycle \ + --reverse \ + --margin="4%,1%,1%,2%" \ + --inline-info \ + --preview 'xbps-query -R {1} '\ + --preview-window=right:55%:wrap \ + --header="Select packages to un-hold. +TAB toggle | ENTER proceed | ESC cancel" \ + --prompt="filter> " + )" + + if [[ -n "$pkg" ]] ; then + echo "Unhold:" + echo "$pkg" + pkg="$( echo "$pkg" | paste -sd " " )" + sudo xbps-pkgdb -v -m unhold $pkg + return $? + fi + return 42 +} + +function markmanual +{ + 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 \ + --preview 'xbps-query -S {2} '\ + --preview-window=right:55%:wrap \ + --header="Select packages to mark as manual. +TAB toggle | ENTER proceed | ESC cancel" \ + --prompt="filter> " | + awk '{print $2}' + )" - pkg="$( echo "$pkg" | paste -sd " "| tr -d ":" )" - if [[ -n "$pkg" ]] - then - clear - sudo xbps-pkgdb -m unhold $pkg - fi + if [[ -n "$pkg" ]] ; then + echo "Marking as manually installed:" + echo "$pkg" + pkg="$( echo "$pkg" | paste -sd " " )" + sudo xbps-pkgdb -v -m manual $pkg + return $? + fi + return 42 } -function hold +function markauto { - local pkg - local argument_input - pkg="$( xbps-query -l | sort -u | - fzf -i \ - --multi \ - --exact \ - --no-sort \ - --select-1 \ - --query="$argument_input" \ - --cycle \ - --reverse \ - --margin="4%,1%,1%,2%" \ - --inline-info \ - --preview 'xbps-query -S {2} '\ - --preview-window=right:55%:wrap \ - --header="TAB key to (un)select. ENTER to place on hold. ESC to quit." \ - --prompt="filter> " | - awk '{print $2}' - )" + pkg="$( xbps-query -m | + sort -u | + fzf -i \ + --multi \ + --exact \ + --no-sort \ + --cycle \ + --reverse \ + --margin="4%,1%,1%,2%" \ + --inline-info \ + --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> " + )" - pkg="$( echo "$pkg" | paste -sd " " )" - if [[ -n "$pkg" ]] - then - clear - sudo xbps-pkgdb -m hold $pkg - fi + if [[ -n "$pkg" ]] ; then + echo "Marking as automatically installed:" + echo "$pkg" + pkg="$( echo "$pkg" | paste -sd " " )" + sudo xbps-pkgdb -v -m auto $pkg + return $? + fi + return 42 } -function maintain +function statrep { - sudo xbps-remove -Oo - } + echo + case "$1" in + 0 ) + echo -e "\e[42m [OK] \e[0m" + ;; + 42 ) + echo -e "\e[7m [NO CHANGES MADE] \e[0m" + sleep 1 + return 0 + ;; + * ) + echo -e "\e[41m [FAILED] \e[0m" + ;; + esac + echo "Press ENTER to continue ..." + read +} function ui { -while true -do -clear -echo - echo -e " \e[7m XbpsUI - Package manager \e[0m " - echo -e " ┌───────────────────────────────────────────────────────────────┐" - echo -e " │ 1 \e[1mU\e[0mpdate System 2 \e[1mM\e[0maintain System │" - echo -e " │ 3 \e[1mI\e[0mnstall Packages 4 \e[1mP\e[0murge packages │" - echo -e " │ 5 \e[1mH\e[0mold Packages 6 \e[1mU\e[0mnhold packages │" - echo -e " └───────────────────────────────────────────────────────────────┘" - - echo -e " Enter number or marked letter(s) - 0 \e[1mQ\e[0muit " + while : ; do + clear + echo + echo -e " XbpsUI Package Manager" + echo -e "┌─────────────────────────────────────────────────────────┐" + echo -e "│ 1 \e[1mU\e[0mpdate System 2 \e[1mM\e[0maintain System │" + echo -e "│ 3 \e[1mI\e[0mnstall Packages 4 \e[1mP\e[0murge Packages │" + echo -e "│ 5 Hold Packages 6 Unhold Packages │" + echo -e "│ 7 Mark Pkgs as Manual 8 Mark Pkgs as Auto │" + echo -e "│ 0 \e[1mQ\e[0muit │" + echo -e "└─────────────────────────────────────────────────────────┘" + echo -n "Enter number or highlighted letter: " read -r choice choice="$(echo "$choice" | tr '[:upper:]' '[:lower:]' )" echo @@ -153,53 +235,47 @@ echo case "$choice" in 1|u|update|update-system ) update - echo - echo -e " \e[41m System updated. To return to xbpsUI press ENTER \e[0m" - # wait for input, e.g. by pressing ENTER: - read + statrep $? ;; 2|m|maintain|maintain-system ) maintain - echo - echo -e " \e[41m System maintenance finished. To return to xbpsUI press ENTER \e[0m" - read + statrep $? ;; 3|i|install|install-packages ) install - echo - echo -e " \e[41m Package installation finished. To return to xbpsUI press ENTER \e[0m" - read + statrep $? ;; 4|p|purge|purge-packages ) purge - echo - echo -e " \e[41m Package(s) purged. To return to xbpsUI press ENTER \e[0m" - read + statrep $? ;; 5|h|hold|hold-packages ) hold - echo - echo -e " \e[41m Package(s) held. To return to xbpsUI press ENTER \e[0m" - read + statrep $? ;; - 6|u|unhold|unhold-packages ) + 6|u|unhold|unhold-packages ) unhold - echo - echo -e " \e[41m Package(s) unheld. To return to xbpsUI press ENTER \e[0m" - read + statrep $? + ;; + 7|n|markmanual|manual-packages ) + markmanual + statrep $? + ;; + 8|a|markauto|auto-packages ) + markauto + statrep $? ;; 0|q|quit|$'\e'|$'\e'$'\e' ) - clear && exit + exit ;; - - * ) - echo -e " \e[41m Wrong option \e[0m" - echo -e " Please try again... " - sleep 2 + '' ) + ;; + * ) + echo -e "\e[7m Unknown option. \e[0m" + sleep 1 ;; - - esac - done - } + esac + done +} ui -- 2.30.2