iterative installing remove

This commit is contained in:
nnduc
2026-04-01 00:02:22 +07:00
parent 53bbc25c5d
commit cdbd0e1065

View File

@@ -19,17 +19,18 @@ if [[ ${#packages[@]} -eq 0 ]]; then
exit 1 exit 1
fi fi
echo "Installing ${#packages[@]} packages..." echo "Resolving ${#packages[@]} packages..."
skipped=()
for pkg in "${packages[@]}"; do # Dry-run to find unknown packages (no sudo needed for --print)
if pacman -Si "$pkg" &>/dev/null || pacman -Sg "$pkg" &>/dev/null; then mapfile -t skipped < <(pacman -S --needed --print "${packages[@]}" 2>&1 >/dev/null \
sudo pacman -S --needed --noconfirm "$pkg" | grep "target not found" | awk -F': ' '{print $2}')
else
echo "Skipping '$pkg': not found in repositories"
skipped+=("$pkg")
fi
done
if [[ ${#skipped[@]} -gt 0 ]]; then if [[ ${#skipped[@]} -gt 0 ]]; then
echo "Skipped ${#skipped[@]} package(s): ${skipped[*]}" echo "Skipping ${#skipped[@]} package(s) not found: ${skipped[*]}"
mapfile -t packages < <(comm -23 \
<(printf '%s\n' "${packages[@]}" | sort) \
<(printf '%s\n' "${skipped[@]}" | sort))
fi fi
echo "Installing ${#packages[@]} packages..."
sudo pacman -S --needed "${packages[@]}"