52 lines
2.1 KiB
Fish
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
|