41 lines
1.8 KiB
Bash
Executable file
41 lines
1.8 KiB
Bash
Executable file
#!/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
|
|
|
|
if [ "$ALL_PACKAGES" == "true" ]; then
|
|
owned_by_you=$(awk -F ':' '{if($1=="o"){print $2}}' APKINDEX | sort | uniq)
|
|
echo "Found $(printf '%s\n' $owned_by_you | wc -l ) packages"
|
|
else
|
|
owned_by_you=$(awk -v RS= -v ORS="\n\n" '/m:Antoine Martin \(ayakael\) <dev@ayakael.net>/' APKINDEX | awk -F ':' '{if($1=="o"){print $2}}' | sort | uniq)
|
|
echo "Found $(printf '%s\n' $owned_by_you | wc -l ) packages owned by you"
|
|
fi
|
|
|
|
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
|
|
freetube) 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.[].version' | sed "s|-beta||");;
|
|
dotnet9-sdk|dotnet9-stage0) upstream_version=${upstream_version/-*};;
|
|
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
|