48 lines
1.1 KiB
Bash
Executable File
48 lines
1.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
COLOR_RESET="\e[0m"
|
|
COLOR_GREEN="\e[32m"
|
|
COLOR_YELLOW="\e[33m"
|
|
|
|
declare -A versions_by_package
|
|
|
|
while read -r repo name ver; do
|
|
key="$name"
|
|
versions_by_package["$key"]+="$repo:$ver "
|
|
done < <(expac --sync --listdelim=$'\n' "%r %n %v")
|
|
|
|
for pkg in "${!versions_by_package[@]}"; do
|
|
entries=(${versions_by_package["$pkg"]})
|
|
|
|
if [[ ${#entries[@]} -gt 1 ]]; then
|
|
versions=()
|
|
for entry in "${entries[@]}"; do
|
|
versions+=("${entry#*:}")
|
|
done
|
|
|
|
first_version="${versions[0]}"
|
|
all_equal=true
|
|
for ver in "${versions[@]}"; do
|
|
if [[ "$ver" != "$first_version" ]]; then
|
|
all_equal=false
|
|
break
|
|
fi
|
|
done
|
|
|
|
if $all_equal; then
|
|
printf "${COLOR_YELLOW}%-30s" "$pkg"
|
|
else
|
|
printf "${COLOR_GREEN}%-30s" "$pkg"
|
|
fi
|
|
|
|
for entry in "${entries[@]}"; do
|
|
repo="${entry%%:*}"
|
|
ver="${entry#*:}"
|
|
printf " %-15s %s" "$repo:" "$ver"
|
|
done
|
|
|
|
printf "${COLOR_RESET}\n"
|
|
fi
|
|
done
|
|
|