72 lines
2.1 KiB
YAML
72 lines
2.1 KiB
YAML
name: Update Star History Chart
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
schedule:
|
|
# Daily at 06:00 UTC
|
|
- cron: "0 6 * * *"
|
|
|
|
permissions:
|
|
contents: write
|
|
|
|
jobs:
|
|
update-star-history:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v5
|
|
|
|
- name: Install SVG renderer
|
|
run: |
|
|
set -euo pipefail
|
|
sudo apt-get update
|
|
sudo apt-get install -y librsvg2-bin
|
|
|
|
- name: Fetch latest chart (SVG) and render PNG
|
|
run: |
|
|
set -euo pipefail
|
|
mkdir -p assets
|
|
curl -fsSL \
|
|
"https://api.star-history.com/svg?repos=sickn33/antigravity-awesome-skills&type=date&legend=top-left" \
|
|
-o /tmp/star-history.svg
|
|
rsvg-convert /tmp/star-history.svg -o assets/star-history.png
|
|
|
|
- name: Refresh README chart cache busters
|
|
run: |
|
|
set -euo pipefail
|
|
cache_bust="$(date -u +%Y%m%d%H%M)"
|
|
python3 - <<'PY' "$cache_bust"
|
|
import re
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
cache_bust = sys.argv[1]
|
|
readme_path = Path("README.md")
|
|
readme = readme_path.read_text()
|
|
|
|
def refresh_url(match):
|
|
url = match.group(0)
|
|
url = re.sub(r"([?&])cache_bust=\d+", "", url)
|
|
separator = "&" if "?" in url else "?"
|
|
return f"{url}{separator}cache_bust={cache_bust}"
|
|
|
|
updated = re.sub(
|
|
r"https://api\.star-history\.com/(?:svg|chart)\?[^\"<\s]+",
|
|
refresh_url,
|
|
readme,
|
|
)
|
|
readme_path.write_text(updated)
|
|
PY
|
|
|
|
- name: Commit and push if changed
|
|
run: |
|
|
set -euo pipefail
|
|
git config user.name "github-actions[bot]"
|
|
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
git add README.md assets/star-history.png
|
|
if git diff --cached --quiet; then
|
|
echo "No changes in star history assets"
|
|
exit 0
|
|
fi
|
|
git commit -m "chore: update star history chart"
|
|
git push
|