You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
102 lines
3.0 KiB
102 lines
3.0 KiB
2 years ago
|
#!/usr/bin/env sh
|
||
|
|
||
|
# Updates all system software.
|
||
|
# Requires that your OS is supported and detected by the detect-distro spell.
|
||
|
# On Arch-based distros, also offers to install pamac to automate rebuilding AUR packages with new changes to pull.
|
||
|
# -v for more verbose output
|
||
|
|
||
|
# Requires say, ask_y, and wizard_eyes, also using colors, all currently located here:
|
||
|
source ./colors
|
||
|
source ./ask_Yn
|
||
|
source ./say
|
||
|
source ./wizard_eyes
|
||
|
|
||
|
# Read arguments
|
||
|
while getopts v flag
|
||
|
do
|
||
|
case "${flag}" in
|
||
|
v) VERBOSE=true;;
|
||
|
esac
|
||
|
done
|
||
|
|
||
|
# Helper function for Arch to check if pamac is already installed
|
||
|
check_pamac() {
|
||
|
wizard_eyes "pacman -Qi pamac # check if pamac is installed"
|
||
|
if pacman -Qi pamac &>/dev/null; then
|
||
|
PAMAC_INSTALLED=1
|
||
|
else
|
||
|
PAMAC_INSTALLED=0
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
# Helper function for Arch to install pamac
|
||
|
install_pamac() {
|
||
|
wizard_eyes "sudo pacman -S pamac"
|
||
|
sudo pacman -S pamac --noconfirm
|
||
|
}
|
||
|
|
||
|
# Catch Ctrl-C and exit immediately it's pressed (otherwise it just kills current operation)
|
||
|
# Help! This doesn't always work, or works with a delay for sudo prompts.
|
||
|
quit() {
|
||
|
exit 1
|
||
|
}
|
||
|
trap quit INT
|
||
|
|
||
|
wizard_eyes "You're a wizard, so executed terminal commands and other tips will display like this."
|
||
|
|
||
|
# Detect what OS we are using using the detect-distro spell, which puts the result in the $DISTRO environment variable
|
||
|
wizard_eyes "./detect-distro"
|
||
|
source ./detect-distro >/dev/null 2>&1
|
||
|
|
||
|
say "Updating system for ${GREEN}$DISTRO${RESET}."
|
||
|
if [ $VERBOSE ]; then say "You may be asked for your ${BLUE}sudo${RESET} password multiple times."; fi
|
||
|
|
||
|
# Based on what distro was detected, update the system in the correct way
|
||
|
case $DISTRO in
|
||
|
"debian")
|
||
|
wizard_eyes "sudo apt update"
|
||
|
sudo apt update
|
||
|
wizard_eyes "sudo apt autoremove"
|
||
|
sudo apt autoremove
|
||
|
wizard_eyes "sudo apt upgrade"
|
||
|
sudo apt upgrade
|
||
|
;;
|
||
|
"arch")
|
||
|
ask_Yn USE_PAMAC "Would you like to use ${BLUE}pamac${RESET} to automate rebuilding of updated AUR packages? (recommended)"
|
||
|
# If Yes, check for pamac install and offer to install it if it's not already installed
|
||
|
if [ "$USE_PAMAC" -eq 1 ]; then
|
||
|
check_pamac
|
||
|
if [ "$PAMAC_INSTALLED" -eq 0 ]; then
|
||
|
ask_Yn INSTALL_PAMAC "${BLUE}pamac${RESET} is not installed. Install it now?"
|
||
|
if [ "$INSTALL_PAMAC" -eq 1 ]; then
|
||
|
install_pamac
|
||
|
else
|
||
|
say "Ok, your AUR packages will not be automatically rebuilt, then."
|
||
|
fi
|
||
|
fi
|
||
|
fi
|
||
|
|
||
|
wizard_eyes "pacman -Syu # update software packages"
|
||
|
sudo pacman -Syu --noconfirm
|
||
|
|
||
|
# Use pamac to update repos
|
||
|
if [ "$USE_PAMAC" -eq 1 ] && [ "$PAMAC_INSTALLED" -eq 1 ]; then
|
||
|
say "Using pamac to rebuild AUR packages."
|
||
|
wizard_eyes "pamac update --aur --devel"
|
||
|
pamac update --aur --devel --no-confirm
|
||
|
fi
|
||
|
|
||
|
;;
|
||
|
"fedora")
|
||
|
wizard_eyes "sudo dnf update"
|
||
|
sudo dnf update
|
||
|
wizard_eyes "sudo dnf upgrade"
|
||
|
sudo dnf upgrade
|
||
|
;;
|
||
|
"mac")
|
||
|
install
|
||
|
wizard_eyes "sudo brew update"
|
||
|
sudo brew update
|
||
|
;;
|
||
|
esac
|
||
|
|