handle existing release on retag

This commit is contained in:
2026-05-15 19:26:06 -05:00
parent 67f6b32d9e
commit 007200b622

View File

@@ -31,16 +31,30 @@ jobs:
TWINE_USERNAME: __token__ TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }} TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }}
run: | run: |
twine upload packages/foreignthon/dist/* twine upload --skip-existing packages/foreignthon/dist/*
twine upload packages/langs/es/dist/* twine upload --skip-existing packages/langs/es/dist/*
- name: Create Gitea release with assets - name: Create Gitea release with assets
env: env:
GIT_RELEASE_TOKEN: ${{ secrets.GIT_RELEASE_TOKEN }} GIT_RELEASE_TOKEN: ${{ secrets.GIT_RELEASE_TOKEN }}
run: | run: |
TAG=${GITHUB_REF#refs/tags/} TAG=${GITHUB_REF#refs/tags/}
echo "Tag is: $TAG" echo "Tag: $TAG"
# Delete existing release if any
EXISTING=$(curl -s \
-H "Authorization: token $GIT_RELEASE_TOKEN" \
"${{ github.server_url }}/api/v1/repos/${{ github.repository }}/releases/tags/$TAG")
EXISTING_ID=$(echo $EXISTING | python -c "import sys,json; d=json.load(sys.stdin); print(d.get('id',''))" 2>/dev/null || echo "")
if [ -n "$EXISTING_ID" ]; then
echo "Deleting existing release $EXISTING_ID"
curl -s -X DELETE \
-H "Authorization: token $GIT_RELEASE_TOKEN" \
"${{ github.server_url }}/api/v1/repos/${{ github.repository }}/releases/$EXISTING_ID"
fi
# Create fresh release
RELEASE=$(curl -s -X POST \ RELEASE=$(curl -s -X POST \
-H "Authorization: token $GIT_RELEASE_TOKEN" \ -H "Authorization: token $GIT_RELEASE_TOKEN" \
-H "Content-Type: application/json" \ -H "Content-Type: application/json" \
@@ -53,11 +67,11 @@ jobs:
}" \ }" \
"${{ github.server_url }}/api/v1/repos/${{ github.repository }}/releases") "${{ github.server_url }}/api/v1/repos/${{ github.repository }}/releases")
echo "Gitea API response: $RELEASE" echo "Release response: $RELEASE"
RELEASE_ID=$(echo $RELEASE | python -c "import sys,json; print(json.load(sys.stdin)['id'])") RELEASE_ID=$(echo $RELEASE | python -c "import sys,json; print(json.load(sys.stdin)['id'])")
for FILE in packages/foreignthon/dist/* packages/langs/es/dist/*; do for FILE in packages/foreignthon/dist/* packages/langs/es/dist/*; do
echo "Uploading $FILE"
curl -s -X POST \ curl -s -X POST \
-H "Authorization: token $GIT_RELEASE_TOKEN" \ -H "Authorization: token $GIT_RELEASE_TOKEN" \
-F "attachment=@$FILE" \ -F "attachment=@$FILE" \