name: Refresh star history chart on: schedule: # Twice daily at 06:00 and 18:00 UTC. - cron: "0 6,18 * * *" workflow_dispatch: permissions: contents: write env: DO_NOT_TRACK: "1" KTX_TELEMETRY_DISABLED: "1" NEXT_TELEMETRY_DISABLED: "1" concurrency: group: star-history-refresh cancel-in-progress: true jobs: refresh: name: Regenerate assets/star-history.svg runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: # RELEASE_PAT can push to the protected main branch; the default # GITHUB_TOKEN is rejected by the branch-protection hook (GH006). token: ${{ secrets.RELEASE_PAT }} - name: Fetch fresh star-history SVG run: | set -euo pipefail # cachebust forces star-history to regenerate instead of serving its # own server-side cache; --location follows the slug-normalizing 301. url="https://api.star-history.com/svg?repos=Kaelio/ktx&type=Date&cachebust=${GITHUB_RUN_ID}-${GITHUB_RUN_ATTEMPT}" curl --fail --location --silent --show-error \ --retry 3 --retry-delay 5 --max-time 60 \ -o assets/star-history.svg.new "$url" # Guard against error pages / truncated responses before overwriting. if ! grep -q "" assets/star-history.svg.new; then echo "Downloaded file is not a valid SVG; aborting." >&2 exit 1 fi if [ "$(wc -c < assets/star-history.svg.new)" -lt 1000 ]; then echo "Downloaded SVG is suspiciously small; aborting." >&2 exit 1 fi # The star-history API returns the SVG without a trailing newline, # which end-of-file-fixer rewrites whenever pre-commit runs # --all-files on a PR. Because the refresh commit below uses [skip ci], # the hook never runs against it here, so an un-normalized file # silently breaks the pre-commit check on every open PR. Normalize to # exactly one trailing newline before committing. printf '%s\n' "$(cat assets/star-history.svg.new)" > assets/star-history.svg rm -f assets/star-history.svg.new - name: Commit if changed run: | set -euo pipefail if git diff --quiet -- assets/star-history.svg; then echo "Star-history chart unchanged; nothing to commit." exit 0 fi git config user.name "github-actions[bot]" git config user.email "41898282+github-actions[bot]@users.noreply.github.com" git add assets/star-history.svg # [skip ci] keeps this housekeeping commit from triggering KTX CI. git commit -m "chore: refresh star history chart [skip ci]" git push