From fc8b885214b1f5b1d9dcff20612a583aca89f6f9 Mon Sep 17 00:00:00 2001 From: "Max P." Date: Sun, 11 May 2025 15:33:15 +0200 Subject: [PATCH] feat(scripts): add script to clean old PyPI dev versions - Introduces a Bash script to delete outdated PyPI dev versions from the Gitea package registry while keeping the latest version - Uses environment variables for authentication and repository details --- .gitea/scripts/cleanup_dev_versions.sh | 45 ++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 .gitea/scripts/cleanup_dev_versions.sh diff --git a/.gitea/scripts/cleanup_dev_versions.sh b/.gitea/scripts/cleanup_dev_versions.sh new file mode 100644 index 0000000..c8c23bc --- /dev/null +++ b/.gitea/scripts/cleanup_dev_versions.sh @@ -0,0 +1,45 @@ +#!/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." \ No newline at end of file