perf(pkgbuild-sync): batch installed package checks
This commit is contained in:
@@ -101,11 +101,14 @@ update_srcinfo() {
|
||||
|
||||
all_packages_current() {
|
||||
local expected_version
|
||||
local installed_packages
|
||||
local -A installed_versions=()
|
||||
local installed_version
|
||||
local srcinfo
|
||||
local pkg_names
|
||||
local pkg_name
|
||||
local epoch
|
||||
local line
|
||||
local missing=0
|
||||
local pkgrel
|
||||
local pkgver
|
||||
@@ -148,15 +151,23 @@ all_packages_current() {
|
||||
return 2
|
||||
fi
|
||||
|
||||
mapfile -t installed_packages < <(
|
||||
pacman -Q "${pkg_names[@]}" 2>/dev/null || true
|
||||
)
|
||||
|
||||
for line in "${installed_packages[@]}"; do
|
||||
pkg_name="${line%% *}"
|
||||
installed_versions["$pkg_name"]="${line#"$pkg_name "}"
|
||||
done
|
||||
|
||||
for pkg_name in "${pkg_names[@]}"; do
|
||||
if ! installed_version="$(pacman -Q "$pkg_name" 2>/dev/null)"; then
|
||||
installed_version="${installed_versions[$pkg_name]-}"
|
||||
if [[ -z "$installed_version" ]]; then
|
||||
printf 'not installed: %s\n' "$pkg_name"
|
||||
missing=1
|
||||
continue
|
||||
fi
|
||||
|
||||
installed_version="${installed_version#"$pkg_name "}"
|
||||
|
||||
if [[ "$installed_version" != "$expected_version" ]]; then
|
||||
printf 'version mismatch: %s %s installed, %s expected\n' \
|
||||
"$pkg_name" "$installed_version" "$expected_version"
|
||||
@@ -249,7 +260,6 @@ process_package() {
|
||||
main() {
|
||||
local failures=0
|
||||
local dir
|
||||
local found=0
|
||||
local package_count=0
|
||||
|
||||
parse_args "$@"
|
||||
@@ -260,7 +270,6 @@ main() {
|
||||
|
||||
for dir in "$root"/*; do
|
||||
[[ -f "${dir}/PKGBUILD" ]] || continue
|
||||
found=1
|
||||
if ((package_count > 0)); then
|
||||
printf '\n'
|
||||
fi
|
||||
@@ -271,7 +280,7 @@ main() {
|
||||
fi
|
||||
done
|
||||
|
||||
((found)) || die "no PKGBUILD directories found in $root"
|
||||
((package_count > 0)) || die "no PKGBUILD directories found in $root"
|
||||
|
||||
if ((failures)); then
|
||||
printf '\n%d package(s) failed\n' "$failures" >&2
|
||||
|
||||
Reference in New Issue
Block a user