* several fixes and enhancements
authorUrban Wallasch <urban.wallasch@freenet.de>
Fri, 10 Apr 2020 10:09:57 +0000 (12:09 +0200)
committerUrban Wallasch <urban.wallasch@freenet.de>
Fri, 10 Apr 2020 10:09:57 +0000 (12:09 +0200)
XbpsUI.sh

index 63d2f78f1acc2a647a9e83eb0f75f62e992eca69..dcf7df5f54059a64974c76c82a64c8262138c188 100755 (executable)
--- a/XbpsUI.sh
+++ b/XbpsUI.sh
 
 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