perfect... #3

Merged
AustrianToast merged 3 commits from dev into main 2023-01-21 03:41:29 +01:00
4 changed files with 66 additions and 29 deletions

View File

@ -1,4 +1,41 @@
# update
# Update
This is an update script written in bash which updates all your pacman and aur packages as well as your flatpaks.
It also backups a list of all your pkg's and flatpaks, your fstab and the makepkg.conf to the location that you specify in the config.
Update script written in bash for Arch. Keeps all your pacman and aur packages as well as your flatpaks up to date with one simple script. It also backups a list of all your pacman/aur pkg's and flatpaks. As well as your fstab and the makepkg.conf to the location that you specify in the config.
## Dependencies
Needed dependencies
```bash
pacman -S zip pacutils
```
## Installation
```bash
git clone https://github.com/AustrianToast/update.git && cd update
```
Before installing, please edit the config and configure it to your liking.
```bash
make install
```
## Usage
```
Usage: update [OPTION]
options:
no flag same as -a
-f updates using flatpak update only
-y updates using an aur-helper only
-a updates using flatpak update and an aur-helper
-g shutdowns the computer afterwards (needs to be the last or only option to work properly)
-r reboots the computer afterwards (needs to be the last or only option to work properly)
```
## Roadmap
- Publish to the aur
- First time setup
## Contributing
Contributions are always welcome!

View File

@ -1,10 +1,10 @@
install:
@echo "==> Installing update v0.4..."
@echo "==> Installing update v1.0..."
@sudo install -Dm755 update /usr/local/bin/update
@cp update.conf ${HOME}/.config/
@echo "==> Finished."
uninstall:
@echo "==> Uninstalling update v0.4..."
@echo "==> Uninstalling update v1.0..."
@sudo rm /usr/local/bin/update ${HOME}/.config/update.conf
@echo "==> Finished."

46
update
View File

@ -1,16 +1,13 @@
#!/bin/bash
# shellcheck source=/dev/null
# updates via an aur-helper and flatpak with flags
# version 0.7
# add options to change aur-helper in the config
# maybe make a first time setup, which asks for backup_location and aur_helper, maybe even if you wanna opt-in to non-interactive flatpak-update (maybe a flag?)
# 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
@ -31,36 +28,39 @@ Help() {
# 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
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
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
paclog-pkglist > pacman-after.txt
}
# updates using flatpak update
update_with_flatpak() {
flatpak update -u --noninteractive
flatpak list > ~/flatpak-after.txt
flatpak list > flatpak-after.txt
}
before_backup && echo -e "${IGreen} pre-backup complete ${NC}"
[[ $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
@ -73,14 +73,14 @@ while getopts 'fyagr' OPTION; do
update_with_aur_helper; update_with_flatpak ;;
g)
[[ $1 = -g ]] && update_with_aur_helper && update_with_flatpak;
after_backup && echo -e "${IGreen} after-backup complete ${NC}" && sleep 3s && shutdown now ;;
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 && echo -e "${IGreen} after-backup complete ${NC}" && sleep 3s && reboot ;;
after_backup && cd "$dir"; echo -e "${IGreen} after-backup complete ${NC}" && sleep 3s && reboot ;;
?)
Help
exit 1;;
esac
done
after_backup && echo -e "${IGreen} after-backup complete ${NC}"
after_backup && cd "$dir"; rm -r /tmp/backup; echo -e "${IGreen} after-backup complete ${NC}"

View File

@ -2,4 +2,4 @@
backup_location=~/
# use this aur-helper
aur_helper=yay
aur_helper=paru