#!/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%*} 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)