vitorpy's Dotfiles
at main 171 lines 5.0 kB view raw
1#!/bin/bash 2# Comprehensive system update script for Arch Linux 3# Updates official repos, AUR, and Flatpak packages 4 5set -e 6 7echo "════════════════════════════════════════════════════════════" 8echo " Arch Linux System Update" 9echo "════════════════════════════════════════════════════════════" 10echo "" 11 12# Color codes 13GREEN='\033[0;32m' 14YELLOW='\033[1;33m' 15BLUE='\033[0;34m' 16NC='\033[0m' # No Color 17 18# Check for updates first 19echo -e "${BLUE}==> Checking for updates...${NC}" 20echo "" 21 22# Official repos 23echo -e "${YELLOW}Official repositories:${NC}" 24if command -v checkupdates &>/dev/null; then 25 official=$(checkupdates 2>/dev/null || true) 26 official_count=$(echo "$official" | grep -v '^$' | wc -l) 27else 28 official=$(pacman -Qu 2>/dev/null || true) 29 official_count=$(echo "$official" | grep -v '^$' | wc -l) 30fi 31 32if [ "$official_count" -gt 0 ]; then 33 echo "$official" 34 echo "" 35else 36 echo " No updates available" 37 echo "" 38fi 39 40# AUR 41echo -e "${YELLOW}AUR packages:${NC}" 42if command -v yay &>/dev/null; then 43 aur=$(yay -Qua 2>/dev/null || true) 44 aur_count=$(echo "$aur" | grep -v '^$' | wc -l) 45 if [ "$aur_count" -gt 0 ]; then 46 echo "$aur" 47 echo "" 48 else 49 echo " No updates available" 50 echo "" 51 fi 52else 53 echo " yay not installed, skipping AUR updates" 54 echo "" 55 aur_count=0 56fi 57 58# Flatpak 59echo -e "${YELLOW}Flatpak packages:${NC}" 60if command -v flatpak &>/dev/null; then 61 flatpak=$(flatpak remote-ls --updates 2>/dev/null || true) 62 flatpak_count=$(echo "$flatpak" | grep -v '^$' | wc -l) 63 if [ "$flatpak_count" -gt 0 ]; then 64 echo "$flatpak" 65 echo "" 66 else 67 echo " No updates available" 68 echo "" 69 fi 70else 71 echo " Flatpak not installed, skipping" 72 echo "" 73 flatpak_count=0 74fi 75 76# Firmware 77echo -e "${YELLOW}Firmware updates:${NC}" 78if command -v fwupdmgr &>/dev/null; then 79 # Refresh metadata first 80 fwupdmgr refresh &>/dev/null || true 81 firmware=$(fwupdmgr get-updates 2>/dev/null | grep -E "^\s+├─" || true) 82 firmware_count=$(echo "$firmware" | grep -v '^$' | wc -l) 83 if [ "$firmware_count" -gt 0 ]; then 84 echo "$firmware" 85 echo "" 86 else 87 echo " No updates available" 88 echo "" 89 fi 90else 91 echo " fwupd not installed, skipping" 92 echo "" 93 firmware_count=0 94fi 95 96# Summary 97total=$((official_count + aur_count + flatpak_count + firmware_count)) 98echo "────────────────────────────────────────────────────────────" 99echo -e "${GREEN}Total updates available: $total${NC}" 100echo " Official: $official_count | AUR: $aur_count | Flatpak: $flatpak_count | Firmware: $firmware_count" 101echo "────────────────────────────────────────────────────────────" 102echo "" 103 104if [ "$total" -eq 0 ]; then 105 echo -e "${GREEN}✓ System is up to date!${NC}" 106 exit 0 107fi 108 109# Ask for confirmation 110read -p "Proceed with updates? [Y/n] " -n 1 -r 111echo "" 112 113if [[ ! $REPLY =~ ^[Yy]$ ]] && [[ ! -z $REPLY ]]; then 114 echo "Update cancelled." 115 exit 0 116fi 117 118echo "" 119 120# Update official repos 121if [ "$official_count" -gt 0 ]; then 122 echo -e "${BLUE}==> Updating official repositories...${NC}" 123 sudo pacman -Syu 124 echo "" 125fi 126 127# Update AUR 128if [ "$aur_count" -gt 0 ]; then 129 echo -e "${BLUE}==> Updating AUR packages...${NC}" 130 yay -Sua 131 echo "" 132fi 133 134# Update Flatpak 135if [ "$flatpak_count" -gt 0 ]; then 136 echo -e "${BLUE}==> Updating Flatpak packages...${NC}" 137 flatpak update -y 138 echo "" 139fi 140 141# Update Firmware 142if [ "$firmware_count" -gt 0 ]; then 143 echo -e "${BLUE}==> Updating firmware...${NC}" 144 sudo fwupdmgr update 145 echo "" 146fi 147 148# Clean up 149echo -e "${BLUE}==> Cleaning up...${NC}" 150echo "Removing orphaned packages..." 151orphans=$(pacman -Qtdq 2>/dev/null || true) 152if [ ! -z "$orphans" ]; then 153 echo "$orphans" 154 sudo pacman -Rns $(pacman -Qtdq) --noconfirm 155else 156 echo " No orphaned packages found" 157fi 158 159echo "" 160echo "Cleaning package cache (keeping last 3 versions)..." 161sudo paccache -rk3 162 163if command -v yay &>/dev/null; then 164 echo "Cleaning yay cache..." 165 yay -Sc --noconfirm 166fi 167 168echo "" 169echo "════════════════════════════════════════════════════════════" 170echo -e "${GREEN}✓ System update complete!${NC}" 171echo "════════════════════════════════════════════════════════════"