iterative installing remove
This commit is contained in:
@@ -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[@]}"
|
||||||
|
|||||||
Reference in New Issue
Block a user