forked from kiss-community/kiss
kiss-outdated: Check for outdated packages via repology
This commit is contained in:
parent
2f64b45677
commit
33dd1ed467
49
contrib/kiss-outdated
Executable file
49
contrib/kiss-outdated
Executable file
@ -0,0 +1,49 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Check installed packages for updates.
|
||||
|
||||
old_IFS=$IFS
|
||||
|
||||
# List via arguments or all installed packages.
|
||||
if [ "$1" ]; then
|
||||
set -- printf '%s\n' "$@"
|
||||
else
|
||||
set -- kiss l
|
||||
fi
|
||||
|
||||
"$@" | (while read -r pkg _; do {
|
||||
read -r ver _ < "/var/db/kiss/installed/$pkg/version"
|
||||
|
||||
# Fix some package names.
|
||||
case $pkg in
|
||||
*-bin) fix=${pkg%%-bin} ;;
|
||||
esac
|
||||
|
||||
# Grab the repology version from the SVG file.
|
||||
rep=$(curl -s "https://repology.org/badge/latest-versions/${fix:-$pkg}.svg")
|
||||
rep=${rep%</text>*}
|
||||
rep=${rep##*>}
|
||||
|
||||
# Skip these.
|
||||
# shellcheck disable=2106
|
||||
{
|
||||
[ "${rep:--}" = - ] && continue
|
||||
[ "$ver" = git ] && continue
|
||||
}
|
||||
|
||||
# Split the comma separated list.
|
||||
# shellcheck disable=2086
|
||||
{
|
||||
IFS=', '
|
||||
set -f
|
||||
set +f -- $rep
|
||||
IFS=$old_IFS
|
||||
}
|
||||
|
||||
# Parse comma separated version lists.
|
||||
{
|
||||
for v; do case $v in "$ver") match=1; esac; done
|
||||
|
||||
[ "$match" ] || printf '%s\n' "$pkg $ver -> $rep"
|
||||
}
|
||||
} & done; wait)
|
Loading…
Reference in New Issue
Block a user