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