upgrade-system: added the script
This commit is contained in:
parent
465d03f767
commit
8b62cfc929
1 changed files with 112 additions and 0 deletions
112
upgrade-system
Executable file
112
upgrade-system
Executable file
|
|
@ -0,0 +1,112 @@
|
||||||
|
#!/bin/sh
|
||||||
|
set -u
|
||||||
|
|
||||||
|
# Variables
|
||||||
|
CADDY=/usr/sbin/caddy
|
||||||
|
: "${SVDIR:=$HOME/.local/service}"
|
||||||
|
APK_UPGRADE="doas apk upgrade --update-cache --available"
|
||||||
|
CONTAINER_PRUNE="podman image prune"
|
||||||
|
|
||||||
|
# Colours
|
||||||
|
if [ -t 1 ] && [ -z "${NO_COLOR:-}" ] ; then
|
||||||
|
BLUE='\033[1;34m'
|
||||||
|
GREEN='\033[1;32m'
|
||||||
|
RED='\033[1;31m'
|
||||||
|
RESET='\033[0m'
|
||||||
|
else
|
||||||
|
BLUE='' GREEN='' RED='' RESET=''
|
||||||
|
fi
|
||||||
|
PREFIX="${BLUE}[upgrade-system]${RESET}"
|
||||||
|
|
||||||
|
# Functions
|
||||||
|
log() { printf "%b %b\n" "$PREFIX" "$*"; }
|
||||||
|
log_ok() { printf "%b %b\n" "$PREFIX" "${GREEN}$*${RESET}"; }
|
||||||
|
log_err() { printf "%b %b\n" "$PREFIX" "${RED}$*${RESET}"; }
|
||||||
|
print_help() {
|
||||||
|
printf "upgrade-system (v0.1)\n\n"
|
||||||
|
printf "Usage: upgrade-system [-cs] (-y)\n\n"
|
||||||
|
printf "Script to simplify updating the system and/or containers.\n\n"
|
||||||
|
printf "\t-c\tUpdate the containers\n"
|
||||||
|
printf "\t-s\tUpdate the system packages\n"
|
||||||
|
printf "\t-y\tDon't require interaction\n"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Getopts
|
||||||
|
c=0; s=0; y=0
|
||||||
|
while getopts "csy" opt ; do
|
||||||
|
case "$opt" in
|
||||||
|
c) c=1;;
|
||||||
|
s) s=1;;
|
||||||
|
y) y=1;;
|
||||||
|
\?) print_help; exit 1;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
shift $((OPTIND-1))
|
||||||
|
|
||||||
|
if [ $c -eq 0 ] && [ $s -eq 0 ] ; then
|
||||||
|
print_help
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# The interactive flag :)
|
||||||
|
if [ "$y" -eq 1 ] ; then
|
||||||
|
CONTAINER_PRUNE="$CONTAINER_PRUNE --force"
|
||||||
|
else
|
||||||
|
APK_UPGRADE="$APK_UPGRADE --interactive"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Making sure we aren't root
|
||||||
|
if [ "$(id -u)" -eq 0 ] ; then
|
||||||
|
log_err "Run this script as a user!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Upgrade system packages
|
||||||
|
if [ "$s" -eq 1 ] ; then
|
||||||
|
log "Updating & Upgrading packages..."
|
||||||
|
if $APK_UPGRADE ; then
|
||||||
|
log_ok "Succesfully upgraded packages!"
|
||||||
|
else
|
||||||
|
log_err "Update failed or aborted!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Give caddy the the correct rights after upgrade
|
||||||
|
log "Making sure caddy has the correct rights..."
|
||||||
|
if getcap "$CADDY" | grep -q 'cap_net_bind_service=ep' ; then
|
||||||
|
log_ok "Caddy already has the correct rights."
|
||||||
|
else
|
||||||
|
log "Setcapping caddy..."
|
||||||
|
if doas setcap cap_net_bind_service=+ep "$CADDY" ; then
|
||||||
|
log_ok "Setcapping succesful!"
|
||||||
|
else
|
||||||
|
log_err "Setcapping failed!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Upgrade containers
|
||||||
|
if [ "$c" -eq 1 ] ; then
|
||||||
|
log "Pulling the newest images..."
|
||||||
|
for image in $(podman image list --format '{{.Repository}}:{{.Tag}}') ; do
|
||||||
|
podman pull "$image"
|
||||||
|
done
|
||||||
|
|
||||||
|
# Restarting containers
|
||||||
|
log "Restarting the pods..."
|
||||||
|
for pod in "$SVDIR"/* ; do
|
||||||
|
[ ! -f "$pod/down" ] && sv restart "$pod"
|
||||||
|
done
|
||||||
|
|
||||||
|
# Pruning old images
|
||||||
|
log "Pruning old images..."
|
||||||
|
$CONTAINER_PRUNE
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Suggest rebooting system
|
||||||
|
if [ "$s" -eq 1 ] ; then
|
||||||
|
log "You should probably reboot your system."
|
||||||
|
fi
|
||||||
|
|
||||||
|
exit 0
|
||||||
Loading…
Add table
Add a link
Reference in a new issue