update/update
René Fuhry 0b9443e4da
perfect...
now dealing with the db.lck file
2023-02-01 02:12:07 +01:00

92 lines
3.2 KiB
Bash

#!/bin/bash
# updates using a pacman-wrapper and flatpak-update with flags
# version 1.4
IGREEN="\033[0;92m" # Intense Green
IYELLOW="\033[0;93m" # Intense Red
NC="\033[0m" # Text Reset
TMP="/tmp/backup"
source "${HOME}"/.config/update.conf
# output if wrong flag is used
Help() {
echo "Usage: update [OPTION]"
echo
echo "options:"
echo "no flag same as -a"
echo "-f updates using flatpak update only"
echo "-p updates using a pacman-wrapper only"
echo "-a updates using flatpak update and a pacman-wrapper"
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 tar, adds some other files and adds the pacman database
# it then rsyncs the tar to the backup location
before_backup() {
[[ ! -d /tmp/backup ]] && mkdir /tmp/backup
pacman -Q > "${TMP}"/pacman-pre.txt
flatpak list > "${TMP}"/flatpak-pre.txt
sudo touch /var/lib/pacman/db.lck
tar -cJf "${TMP}"/before-backup.tar.xz.new "${TMP}"/pacman-pre.txt "${TMP}"/flatpak-pre.txt /var/lib/pacman/local &> /dev/null
sudo rm /var/lib/pacman/db.lck
rsync "${TMP}"/before-backup.tar.xz.new "${backup_location}"
rename before-backup.tar.xz.new before-backup.tar.xz "${backup_location}"/before-backup.tar.xz.new
}
# moves the package lists into a tar, it then rsyncs the tar to the backup location
after_backup() {
tar -cJf "${TMP}"/after-backup.tar.xz.new "${TMP}"/pacman-after.txt "${TMP}"/flatpak-after.txt &> /dev/null
rsync "${TMP}"/after-backup.tar.xz.new "${backup_location}"
rename after-backup.tar.xz.new after-backup.tar.xz "${backup_location}"/after-backup.tar.xz.new
rm -r /tmp/backup
}
# updates using a pacman-wrapper
update_with_pacman_wrapper() {
"${pacman_wrapper}"
pacman -Q > "${TMP}"/pacman-after.txt
}
# updates using flatpak-update
update_with_flatpak() {
flatpak update -u --noninteractive
flatpak list > "${TMP}"/flatpak-after.txt
}
[[ $1 = --help ]] && Help && exit 0;
while [ -f /var/lib/pacman/db.lck ]; do {
echo -e "${IYELLOW}->${NC} /var/lib/pacman/db.lck exists"
echo -e "${IYELLOW}->${NC} there might be an instance of pacman running. exiting..."
exit 1
}
done
before_backup && echo -e "${IGREEN}pre-backup complete${NC}"
[[ -z $1 ]] && update_with_pacman_wrapper && update_with_flatpak;
while getopts 'fpagr' OPTIONS; do
case "$OPTIONS" in
f)
update_with_flatpak ;;
p)
update_with_pacman_wrapper ;;
a)
update_with_pacman_wrapper; update_with_flatpak ;;
g)
[[ $1 = -g ]] && update_with_pacman_wrapper && update_with_flatpak;
after_backup && echo -e "${IGREEN}after-backup complete${NC}" && sleep 3s && shutdown now ;;
r)
[[ $1 = -r ]] && update_with_pacman_wrapper && update_with_flatpak;
after_backup && echo -e "${IGREEN}after-backup complete${NC}" && sleep 3s && reboot ;;
?)
Help
exit 1;;
esac
done
after_backup && echo -e "${IGREEN}after-backup complete${NC}"