Files
dotfiles/.config/fish/functions/update-system.fish
T

52 lines
2.1 KiB
Fish

function update-system --description "Update system packages depending on OS"
# Detect operating system
set -l os (uname -s)
# Helper function to run commands with sudo password retry
function run_with_sudo
set -l cmd $argv
while true
# Trigger sudo verification. If it succeeds, run the actual command.
if sudo -v
sudo $cmd
return $status
else
echo (set_color red)"Passwort war inkorrekt oder sudo wurde abgebrochen."(set_color normal)
read -l -p "echo 'Möchten Sie es erneut versuchen? (j/N): '" confirm
if not string match -ri '^(j|ja|y|yes)$' "$confirm"
echo "Abgebrochen."
return 1
end
end
end
end
if test "$os" = "Darwin"
echo (set_color blue)"[Update-System] macOS erkannt. Starte Homebrew Update..."(set_color normal)
brew update && brew upgrade
# Optional global npm packages update if npm is installed
if type -q npm
echo (set_color blue)"[Update-System] Aktualisiere globale npm-Pakete..."(set_color normal)
npm update -g
end
else if test -f /etc/arch-release
echo (set_color blue)"[Update-System] Arch Linux erkannt. Starte System-Update..."(set_color normal)
if type -q yay
# yay handles password prompts and elevation internally, so we run it directly
yay -Syu
else
run_with_sudo pacman -Syu
end
else if test -f /etc/debian_version
echo (set_color blue)"[Update-System] Debian/Ubuntu-basiertes System erkannt. Starte System-Update..."(set_color normal)
run_with_sudo apt update; and run_with_sudo apt upgrade -y
else if test -f /etc/fedora-release
echo (set_color blue)"[Update-System] Fedora erkannt. Starte System-Update..."(set_color normal)
run_with_sudo dnf upgrade -y
else
echo (set_color red)"[Update-System] Unbekanntes Betriebssystem. Keine automatische Aktualisierung möglich."(set_color normal)
return 1
end
end