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
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