yay_remove_orphans() {
local backup_dir="$HOME/.config/yay"
local date_str
local backup_file
local orphans
date_str="$(date +%Y-%m-%d_%H-%M-%S)"
backup_file="$backup_dir/remove_orph_${date_str}.bak"
mkdir -p "$backup_dir"
# Verwaiste Pakete ermitteln
orphans="$(yay -Qtdq)"
if [[ -z "$orphans" ]]; then
echo "✔ Keine verwaisten Pakete gefunden."
return 0
fi
# Backup schreiben
echo "$orphans" > "$backup_file"
echo "📦 Backup der verwaisten Pakete erstellt:"
echo " $backup_file"
echo
echo "🧹 Entferne folgende Pakete:"
echo "$orphans"
echo
yay -Rns $orphans
}
Und das ist der Code, um Pakete aus dem "Backup" wieder herzustellen.
yay_restore_orphans() {
local backup_dir="$HOME/.config/yay"
local backup_file
local packages
local selected
# Backup-Datei auswählen
backup_file=$(ls -1 "$backup_dir"/remove_orph_*.bak 2>/dev/null | fzf \
--prompt="Backup auswählen: " \
--height=40% \
--reverse)
[[ -z "$backup_file" ]] && {
echo "✖ Kein Backup ausgewählt."
return 1
}
# Pakete aus Backup lesen
packages=("${(@f)$(cat "$backup_file")}")
if [[ ${#packages[@]} -eq 0 ]]; then
echo "✖ Backup ist leer."
return 1
fi
# Pakete auswählen
selected=($(printf "%s\n" "${packages[@]}" | fzf \
--multi \
--prompt="Pakete auswählen (TAB): " \
--height=60% \
--reverse))
[[ ${#selected[@]} -eq 0 ]] && {
echo "✖ Keine Pakete ausgewählt."
return 1
}
echo
echo "📦 Installiere folgende Pakete:"
printf " - %s\n" "${selected[@]}"
echo
yay -S "${selected[@]}"
}