docker-php-extension-installer/.github/workflows/update-ghcr-badge.yml

58 lines
2.1 KiB
YAML

name: Update GitHub Registry badge
on:
schedule:
- cron: "0 12 * * *"
workflow_dispatch:
jobs:
update-ghcr-badge:
name: Update GitHub Registry badge
runs-on: windows-latest
steps:
-
name: Checkout
uses: actions/checkout@v4
with:
ref: assets
-
name: Build badge
id: build-badge
run: |
$response = Invoke-WebRequest -Uri https://github.com/mlocati/docker-php-extension-installer/pkgs/container/php-extension-installer -ErrorAction Stop
$html = $response.Content -replace '\s+', ' '
if (-not($html -match 'Total downloads.*?> *(?<count>\d+\w*)')) {
throw 'Unable to find the total downloads count'
}
$count = $Matches.count
Write-Host -Object "Current downloads count: $count"
$response = Invoke-WebRequest -Uri https://img.shields.io/badge/GitHub_Registry_pulls-$count-066da5 -ErrorAction Stop
$newBadge = $response.Content.Trim()
Write-Host -Object "Badge source: $newBadge"
$badgePath = 'resources/ghcr-badge.svg'
$badgeUpdated = $true
if (Test-Path -LiteralPath $badgePath -PathType Leaf) {
$oldBadge = (Get-Content -LiteralPath $badgePath -Encoding utf8 -Raw).Trim()
if ($oldBadge -eq $newBadge) {
Write-Host -Object 'Badge is already up-to-date'
$badgeUpdated = $false
} else {
Write-Host -Object 'Badge is updated'
}
} else {
Write-Host -Object 'Badge is new'
}
if ($badgeUpdated) {
Set-Content -LiteralPath $badgePath -Value $newBadge -NoNewline -Encoding utf8 -ErrorAction Stop
'updated=yes' | Out-File -FilePath $env:GITHUB_OUTPUT -Append -Encoding utf8
}
-
name: Commit
if: steps.build-badge.outputs.updated == 'yes'
run: |
git add resources/ghcr-badge.svg
git config user.name GitHub
git config user.email noreply@github.com
git commit -m 'Update GitHub Registry badge'
git push