#!/bin/bash # expects the following env variables: # downstream: downstream repo repo=${downstream/*\/} curl --silent $downstream/x86_64/APKINDEX.tar.gz | tar -O -zx APKINDEX > APKINDEX owned_by_you=$(awk -v RS= -v ORS="\n\n" '/m:Antoine Martin \(ayakael\) /' APKINDEX | awk -F ':' '{if($1=="o"){print $2}}' | sort | uniq) echo "Found $(printf '%s\n' $owned_by_you | wc -l ) packages owned by you" rm -f out_of_date not_in_anitya for pkg in $owned_by_you; do upstream_version=$(curl --fail -X GET -sS -H 'Content-Type: application/json' "https://release-monitoring.org/api/v2/packages/?name=$pkg&distribution=Alpine" | jq -r '.items.[].stable_version') downstream_version=$(sed -n "/^P:$pkg$/,/^$/p" APKINDEX | awk -F ':' '{if($1=="V"){print $2}}' | sort -V | tail -n 1) downstream_version=${downstream_version/-*} # special cases case $pkg in forgejo-aneksajo)upstream_version=${upstream_version/-git-annex/_git};; authentik) upstream_version=$(curl --fail -X GET -sS -H 'Content-Type: application/json' "https://release-monitoring.org/api/v2/projects/?name=$pkg&distribution=Alpine" | jq -r '.items.[].stable_versions' | jq -r ".[] | match(\"${downstream_version%.*}.*\").string" | head -n 1) latest_version=$(curl --fail -X GET -sS -H 'Content-Type: application/json' "https://release-monitoring.org/api/v2/packages/?name=$pkg&distribution=Alpine" | jq -r '.items.[].stable_version' ) # append version number to signal that this is not latest major version if [ "${upstream_version%.*}" != "${latest_version%.*}" ]; then echo "$pkg${latest_version%.*} major version available" echo "$pkg${latest_version%.*} $downstream_version $latest_version $repo" >> out_of_date pkg=$pkg${upstream_version%.*} fi ;; mastodon) upstream_version=$(curl --fail -X GET -sS -H 'Content-Type: application/json' "https://release-monitoring.org/api/v2/projects/?name=$pkg&distribution=Alpine" | jq -r '.items.[].stable_versions' | jq -r ".[] | match(\"${downstream_version%.*}.*\").string" | head -n 1) latest_version=$(curl --fail -X GET -sS -H 'Content-Type: application/json' "https://release-monitoring.org/api/v2/packages/?name=$pkg&distribution=Alpine" | jq -r '.items.[].stable_version' ) # append version number to signal that this is not latest major version if [ "${upstream_version%.*}" != "${latest_version%.*}" ]; then echo "$pkg${latest_version%.*} major version available" echo "$pkg${latest_version%.*} $downstream_version $latest_version $repo" >> out_of_date pkg=$pkg${upstream_version%.*} fi ;; esac if [ -z "$upstream_version" ]; then echo "$pkg not in anitya" echo "$pkg" >> not_in_anitya elif [ "$downstream_version" != "$(printf '%s\n' $upstream_version $downstream_version | sort -V | head -n 1)" ]; then echo "$pkg higher downstream" continue elif [ "$upstream_version" != "$downstream_version" ]; then echo "$pkg upstream version $upstream_version does not match downstream version $downstream_version" echo "$pkg $downstream_version $upstream_version $repo" >> out_of_date fi done