Skip to content

Update Download Count on Release #79

Update Download Count on Release

Update Download Count on Release #79

name: Update Download Count on Release
on:
schedule:
- cron: '0 0 * * 0' # Runs once a week at midnight.
workflow_dispatch: # Allows manual triggering
release:
types: [published] # when a new release is made
jobs:
update:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Fetch Download Count
id: fetch_downloads
run: |
# Fetch the releases
releases=$(curl -s https://api.github.com/repos/shupershuff/diablo2rloader/releases)
# Debug: Print raw JSON to check the response
echo "Raw releases data:"
echo "$releases" | tee releases.json # Also output to a file for inspection
# Validate JSON format and check for errors
if ! echo "$releases" | jq empty > /dev/null 2>&1; then
echo "Error: Invalid JSON response."
exit 1
fi
# Initialize variables for max downloads
max_download_count=0
release_with_max_downloads=""
# Iterate through each release and capture max downloads
echo "$releases" | jq -c '.[]' | while IFS= read -r release; do
release_name=$(echo "$release" | jq -r '.tag_name')
download_count=$(echo "$release" | jq '[.assets[].download_count // 0] | add')
# Log the release name and download count for debugging
echo "Release: $release_name, Download Count: $download_count"
# Update the max_download_count and release_with_max_downloads if applicable
if [ "$download_count" -gt "$max_download_count" ]; then
max_download_count=$download_count
release_with_max_downloads=$release_name
echo "New max downloads: $max_download_count for release: $release_with_max_downloads"
fi
done
# Log the final result for debugging
echo "Final Max downloads: $max_download_count for release: $release_with_max_downloads"
# Assign to GitHub output
echo "download_count=$max_download_count" >> $GITHUB_OUTPUT
echo "release_with_max_downloads=$release_with_max_downloads" >> $GITHUB_OUTPUT
- name: Update JSON File
run: |
echo '{
"schemaVersion": 1,
"label": "Downloads",
"message": "'${{ steps.fetch_downloads.outputs.download_count }}'",
"color": "blue"
}' > .github/max-release-download-count.json
- name: Commit and Push Changes
env:
TOKEN: ${{ secrets.ACTIONS_PUSH_TOKEN }}
run: |
git config --global user.name 'github-actions'
git config --global user.email 'github-actions@github.com'
git add .github/max-release-download-count.json
git diff --cached --exit-code || git commit -m 'Update download count' || echo "No changes to commit"
git push https://$TOKEN@github.com/shupershuff/Diablo2RLoader.git HEAD:main || echo "No changes to push"