blob: 81f64e7ac443fbb97461c493f49343b694a25c61 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
#!/bin/sh
#
# Check installed packages for updates.
old_IFS=$IFS
# Notify the user
printf '\033[1;33m-> \033[1;36mnote \033[m%s\n' \
"If you are doing too many requests you will note be" \
"able to get information for every package you have" >&2
# 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")
# Skip these instead of outputting empty
# version informations.
# shellcheck disable=2106
case "$rep" in (*'Too Many Requests'*) continue ;; esac
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)
|