#!/bin/bash
set -e

REPO=neurocyte/flow-nightly
KEEP=7

if [ -n "$1" ]; then
    TEAARGS="--login $1"
else
    TEAARGS="--login codeberg"
fi

RELEASES="$(
    page=1
    while :; do
        data=$(tea api $TEAARGS "repos/${REPO}/releases?page=${page}&limit=50")
        [ "$(echo "$data" | jq length)" = 0 ] && break
        echo "$data"
        page=$((page + 1))
    done | jq -s 'add | sort_by(.id)|reverse'
)"

echo latest:
echo "$RELEASES" | jq -r '.[0:1] | .[] | "\(.name // .tag_name)\t\(.assets | length)"'

echo
echo to keep:
echo "$RELEASES" | jq -r ".[1:${KEEP}] | .[] | \"\(.name // .tag_name)\t\(.assets | length)\""

echo
echo to clean-up:
REMOVE="$(echo "$RELEASES" | jq -r ".[${KEEP}:]")"
echo "$REMOVE" | jq -r '.[] | select((.assets | length) > 3) | "\(.name // .tag_name)\t\(.assets | length)"'

echo
echo running clean-up...
echo

echo "$REMOVE" |
    jq -r '.[] | select((.assets | length) > 3) | "\(.id) \(.tag_name) \(.assets | length) \(.name)"' |
    while read -r release_id release_tag asset_count release_name; do
        echo
        echo "cleaning up $asset_count assets from release $release_tag - $release_name"
        echo "$REMOVE" | jq -r ".[] | select(.id == $release_id) | .assets | .[] | \"\(.id) \(.name)\" " |
            while read -r asset_id asset_name; do
                echo -n "  $asset_name  "
                tea api $TEAARGS -X DELETE "/repos/${REPO}/releases/${release_id}/assets/${asset_id}" || true
            done
    done
