mirror of
https://github.com/Kaelio/ktx.git
synced 2026-06-07 07:55:13 +02:00
The star-history refresh workflow committed the API's SVG verbatim, but the response has no trailing newline. Because the refresh commit uses [skip ci], the file never ran end-of-file-fixer at commit time, so pre-commit's `--all-files` run failed end-of-file-fixer on every open PR (e.g. #240), even PRs that never touched the file. Normalize the downloaded SVG to exactly one trailing newline in the workflow (idempotent, so the "unchanged" guard still works), and fix the currently committed file so open PRs go green now.
72 lines
2.8 KiB
YAML
72 lines
2.8 KiB
YAML
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 "</svg>" 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
|