45 lines
1.3 KiB
Bash
Executable File
45 lines
1.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
# cleanup_dev_versions.sh - Delete old PyPI dev versions from Gitea package registry
|
|
|
|
# Required environment variables
|
|
USERNAME="${TWINE_USERNAME}"
|
|
TOKEN="${TWINE_PASSWORD}"
|
|
REPO="${GITHUB_REPOSITORY}" # e.g., maxp/repocat
|
|
API_BASE="${GITHUB_API_URL%/}" # Strip trailing slash if present
|
|
|
|
OWNER="${REPO%%/*}"
|
|
PACKAGE_NAME="${REPO##*/}"
|
|
API_URL="${API_BASE}/packages/${OWNER}/pypi/${PACKAGE_NAME}"
|
|
|
|
# Fetch the list of versions
|
|
response=$(curl -s -u "$USERNAME:$TOKEN" "$API_URL")
|
|
|
|
# Extract all .dev versions, sort by creation time
|
|
mapfile -t versions_to_delete < <(echo "$response" | jq -r '
|
|
map(select(.version | test("\\.dev"))) |
|
|
sort_by(.created_at) |
|
|
.[0:-1][] |
|
|
.version')
|
|
|
|
# Determine latest version to keep
|
|
latest_version=$(echo "$response" | jq -r '
|
|
map(select(.version | test("\\.dev"))) |
|
|
sort_by(.created_at) |
|
|
last.version')
|
|
|
|
if [[ -z "$latest_version" || ${#versions_to_delete[@]} -eq 0 ]]; then
|
|
echo "No old .dev versions to delete."
|
|
exit 0
|
|
fi
|
|
|
|
echo "Keeping latest .dev version: $latest_version"
|
|
|
|
# Delete old .dev versions
|
|
for version in "${versions_to_delete[@]}"; do
|
|
echo "Deleting old .dev version: $version"
|
|
curl -s -X DELETE -u "$USERNAME:$TOKEN" "$API_URL/$version"
|
|
done
|
|
|
|
echo "Cleanup complete." |