87 lines
3.1 KiB
Bash
87 lines
3.1 KiB
Bash
#!/bin/bash
|
|
|
|
# updates via an aur-helper and flatpak with flags
|
|
# version 1.0
|
|
|
|
IGreen="\033[0;92m" # Green
|
|
NC="\033[0m" # Text Reset
|
|
|
|
dir="$pwd"
|
|
|
|
source ~/.config/update.conf
|
|
|
|
# output if wrong flag is used
|
|
Help() {
|
|
echo "updates via an aur-helper and flatpak with flags"
|
|
echo
|
|
echo "Usage: update [OPTION]"
|
|
echo
|
|
echo "options:"
|
|
echo "no flag same as -a"
|
|
echo "-f updates using flatpak update only"
|
|
echo "-y updates using an aur-helper only"
|
|
echo "-a updates using flatpak update and an aur-helper"
|
|
echo "-g shutdowns the computer afterwards (needs to be the last or only option to work properly)"
|
|
echo "-r reboots the computer afterwards (needs to be the last or only option to work properly)"
|
|
}
|
|
|
|
# creates package lists, moves them into a zip, adds some other files to the zip and backups the pacman database in the form of a tar
|
|
# it then rsyncs the zip and the tar to the backup location
|
|
before_backup() {
|
|
paclog-pkglist > pacman-pre.txt
|
|
flatpak list > flatpak-pre.txt
|
|
zip --quiet --move before-backup.zip.new pacman-pre.txt flatpak-pre.txt
|
|
zip --quiet --grow before-backup.zip.new /etc/fstab /etc/makepkg.conf
|
|
tar -cJf pacman-database.tar.xz.new /var/lib/pacman/local &> /dev/null
|
|
rsync --remove-source-files before-backup.zip.new pacman-database.tar.xz.new "$backup_location"
|
|
rename before-backup.zip.new before-backup.zip "$backup_location"/before-backup.zip.new
|
|
rename pacman-database.tar.xz.new pacman-database.tar.xz "$backup_location"/pacman-database.tar.xz.new
|
|
}
|
|
|
|
# moves the package lists into a zip, it then rsyncs the zip to the backup location
|
|
after_backup() {
|
|
zip --quiet --move after-backup.zip.new pacman-after.txt flatpak-after.txt
|
|
rsync --remove-source-files after-backup.zip.new "$backup_location"
|
|
rename after-backup.zip.new after-backup.zip "$backup_location"/after-backup.zip.new
|
|
}
|
|
|
|
# updates using aur-helper
|
|
update_with_aur_helper() {
|
|
"$aur_helper"
|
|
paclog-pkglist > pacman-after.txt
|
|
}
|
|
|
|
# updates using flatpak update
|
|
update_with_flatpak() {
|
|
flatpak update -u --noninteractive
|
|
flatpak list > flatpak-after.txt
|
|
}
|
|
|
|
[[ $1 = --help ]] && Help && exit 0;
|
|
|
|
[[ ! -d /tmp/backup ]] && mkdir /tmp/backup;
|
|
cd /tmp/backup && before_backup && echo -e "${IGreen} pre-backup complete ${NC}"
|
|
|
|
[[ -z $1 ]] && update_with_aur_helper && update_with_flatpak;
|
|
while getopts 'fyagr' OPTION; do
|
|
case "$OPTION" in
|
|
f)
|
|
update_with_flatpak ;;
|
|
y)
|
|
update_with_aur_helper ;;
|
|
a)
|
|
update_with_aur_helper; update_with_flatpak ;;
|
|
g)
|
|
[[ $1 = -g ]] && update_with_aur_helper && update_with_flatpak;
|
|
after_backup && cd "$dir"; echo -e "${IGreen} after-backup complete ${NC}" && sleep 3s && shutdown now ;;
|
|
r)
|
|
[[ $1 = -r ]] && update_with_aur_helper && update_with_flatpak;
|
|
after_backup && cd "$dir"; echo -e "${IGreen} after-backup complete ${NC}" && sleep 3s && reboot ;;
|
|
?)
|
|
Help
|
|
exit 1;;
|
|
esac
|
|
done
|
|
|
|
after_backup && cd "$dir"; rm -r /tmp/backup; echo -e "${IGreen} after-backup complete ${NC}"
|