diff --git a/scripts/global/update-pve.sh b/scripts/global/update-pve.sh index 57323c3..2111b9c 100644 --- a/scripts/global/update-pve.sh +++ b/scripts/global/update-pve.sh @@ -246,19 +246,47 @@ EOF msg_warn "$(translate "Some conflicting utilities may not have been removed")" fi - msg_info "$(translate "Performing system upgrade...")" + msg_info "$(translate "Updating packages...")" apt-get install pv -y > /dev/null 2>&1 - - if DEBIAN_FRONTEND=noninteractive apt-get -y \ + msg_ok "$(translate "Packages updated successfully")" + DEBIAN_FRONTEND=noninteractive apt-get -y \ -o Dpkg::Options::='--force-confdef' \ -o Dpkg::Options::='--force-confold' \ - dist-upgrade >> "$log_file" 2>&1; then + dist-upgrade 2>&1 | while IFS= read -r line; do + echo "$line" >> "$log_file" + + if [[ "$line" =~ ^(Setting\ up|Unpacking|Preparing\ to\ unpack|Processing\ triggers\ for) ]]; then + package_name=$(echo "$line" | sed -E 's/.*(Setting up|Unpacking|Preparing to unpack|Processing triggers for) ([^ :]+).*/\2/') + [ -z "$package_name" ] && package_name="$(translate "Unknown")" + + tput sc + row=$(( $(tput lines) - 6 )) + tput cup $row 0; printf "%s\n" "$(translate "Installing packages...")" + tput cup $((row + 1)) 0; printf "%s\n" "──────────────────────────────────────────────" + tput cup $((row + 2)) 0; printf "%s %s\n" "$(translate "Package:")" "$package_name" + tput cup $((row + 3)) 0; printf "%s\n" "Progress: [ ] 0%" + tput cup $((row + 4)) 0; printf "%s\n" "──────────────────────────────────────────────" + + for i in $(seq 1 10); do + sleep 0.1 + progress=$((i * 10)) + tput cup $((row + 3)) 9 + printf "[%-50s] %3d%%" "$(printf "#%.0s" $(seq 1 $((progress/2))))" "$progress" + done + tput rc + fi + done + + upgrade_exit_code=${PIPESTATUS[0]} + + if [ $upgrade_exit_code -eq 0 ]; then msg_ok "$(translate "System upgrade completed successfully")" else msg_error "$(translate "System upgrade failed. Check log: $log_file")" return 1 fi + msg_info "$(translate "Installing essential Proxmox packages...")" local additional_packages="zfsutils-linux proxmox-backup-restore-image chrony"