53 lines
1.7 KiB
Bash
53 lines
1.7 KiB
Bash
#!/bin/bash
|
|
|
|
# Exit on any error
|
|
set -e
|
|
|
|
cd $1
|
|
|
|
# Source the PKGBUILD in a subshell to avoid polluting the global environment
|
|
(
|
|
source ./PKGBUILD
|
|
|
|
# Convert pkgname to array in case it's a single string
|
|
pkgnames=("${pkgname[@]}")
|
|
|
|
for pkg in "${pkgnames[@]}"; do
|
|
echo "Checking package: $pkg"
|
|
|
|
if pacman -Si "$pkg" &>/dev/null; then
|
|
echo "Package '$pkg' exists in a repository."
|
|
|
|
# Get the package build date
|
|
pkg_build_date=$(date -d "$(pacman -Si "$pkg" | grep 'Build Date' | cut -d: -f2-)" +%s)
|
|
|
|
all_deps=("${depends[@]}" "${makedepends[@]}" "${optdepends[@]}")
|
|
|
|
# Check each dependency
|
|
for dep in "${all_deps[@]}"; do
|
|
dep_name=$(echo "$dep" | sed 's/[<>=].*//') # Remove version constraints
|
|
echo "Querying dependency: $dep_name"
|
|
|
|
if pacman -Si "$dep_name" &>/dev/null; then
|
|
dep_build_date=$(date -d "$(pacman -Si "$dep_name" | grep 'Build Date' | cut -d: -f2-)" +%s)
|
|
if (( dep_build_date >= pkg_build_date )); then
|
|
echo "Dependency '$dep_name' has newer or equal build date than '$pkg'."
|
|
echo "OUT-OF-DATE"
|
|
exit 0
|
|
fi
|
|
else
|
|
echo "Dependency '$dep_name' not found in repositories. Skipping."
|
|
fi
|
|
done
|
|
|
|
echo "All dependencies are older than package '$pkg'."
|
|
echo "UP-TO-DATE"
|
|
exit 0
|
|
else
|
|
echo "Package '$pkg' does NOT exist in any repository."
|
|
echo "OUT-OF-DATE"
|
|
exit 0
|
|
fi
|
|
done
|
|
)
|